2017-10-08 2 views
3

je suis en train de faire des choses simples:Si la déclaration dans Lua

  • programme imprime premier message et attend pour les types d'entrée utilisateur
  • utilisateur dans « jouer » ou « quitter »
  • si l'utilisateur types dans "play" programme imprime "jouons" et quitte (pour l'instant)
  • si l'utilisateur tape dans le programme "leave" imprime "bye" et quitte
  • si l'utilisateur tape autre chose que "jouer" ou "laisser" "programme imprime premier mess âge et attend l'entrée d'utilisateur à nouveau

Code cependant en cours imprime tout premier message 2 fois et sorties:

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 

ce qui ne va pas ici? toute aide appréciée, merci

+0

qu'est ce que 'input'? – hjpotter92

+0

J'ai modifié le code: input = io.read(). le problème est que, après tout programme d'entrée utilisateur imprime le premier message une fois de plus et quitte – hexbreak

Répondre

4

Une déclaration if n'exécutera une fois. Il ne saute pas aux autres parties du programme. Pour ce faire, vous devez envelopper votre code d'entrée dans une boucle while et sortir quand vous obtenez une réponse valide:

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 

En savoir plus sur les boucles here.

1

La ligne if input ~= "play" or "leave" then est évaluée comme:

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

La chaîne "leave", ou toute chaîne pour cette matière, est considérée comme une valeur truthy.

Vous devez comparer les deux chaînes, en utilisant and:

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

L'idiome habituel est

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 

, mais vous devez probablement une boucle comme suggéré par @luther.