2017-10-08 3 views
3

ich versuche einfachsten Dinge zu tun:If-Anweisung in Lua

  • Programm druckt erste Nachricht und wartet auf Benutzereingaben
  • Benutzertypen in „spielen“ oder „verlassen“
  • wenn Benutzer Typen in "Play" Programm druckt "lass uns spielen" und beendet (vorerst)
  • Wenn Benutzer in "leave" Programm schreibt druckt "tschüss" und beendet
  • wenn Benutzer anders als "play" oder "leave "Programm druckt erste Unordnung Alter und wartet auf Benutzereingaben wieder

jedoch aktuelle Code druckt nur erste Nachricht 2 mal und Ausfahrten:

print("welcome. you have 2 options: play or leave. choose.") 
input = io.read() 

if input == "play" then 
print("let's play") 
end 

if input == "leave" then 
print("bye") 
end 

if input ~= "play" or "leave" then 
print("welcome. you have 2 options: play or leave. choose.") 
end 

was hier falsch ist? jede Hilfe dankbar, dank

+0

Was ist "Eingabe"? – hjpotter92

+0

Ich habe Code bearbeitet: input = io.read(). Problem ist, dass nach jedem Benutzereingabeprogramm die erste Nachricht noch einmal gedruckt wird und beendet wird – hexbreak

Antwort

4

Eine if Anweisung wird nur einmal ausgeführt werden. Es springt nicht zu anderen Teilen des Programms. Dazu müssen Sie Ihre Eingabe-Code in einer Schleife while wickeln müssen und auszubrechen wenn Sie eine gültige Antwort erhalten:

while true do 
    print("welcome. you have 2 options: play or leave. choose.") 
    local input = io.read() 

    if input == "play" then 
    print("let's play") 
    break 
    elseif input == "leave" then 
    print("bye") 
    break 
    end 

end 

Lesen Sie mehr über Schleifen here.

1

Die Linie if input ~= "play" or "leave" then wird als ausgewertet:

if (input ~= "play") or "leave" then 

Der String "leave" oder eine beliebige Zeichenfolge für diese Angelegenheit, ein truthy Wert betrachtet wird.

Sie müssen beide Strings vergleichen, mit and:

if input ~= "play" and input ~= "leave" then 
    print("welcome. you have 2 options: play or leave. choose.") 
end 
0

Die übliche Idiom ist

if input == "play" then 
    print("let's play") 
elseif input == "leave" then 
    print("bye") 
else 
    print("welcome. you have 2 options: play or leave. choose.") 
end 

aber Sie müssen wahrscheinlich eine Schleife, wie durch @luther vorgeschlagen.