2017-02-11 4 views
1

Okay, ich kodiere ein Pokémon Text-Abenteuer Art von Spiel und ich brauche Hilfe mit While-Loops. Ich habe bereits den while-loops-Teil gemacht. Aber der Teil, der nicht funktioniert, ist: Du hast die Wahl zwischen zwei raw_inputs run, battle. Die Nachricht wird nicht angezeigt, wenn Sie eine der beiden Tasten drücken. Alles was es tut, ist die Frage zu wiederholen, die ich auch programmiert habe. Die Frage lautet "Willst du das Yveltal führen oder kämpfen?". Sie können entweder "Ausführen" oder "Kampf" in der ipython-Sitzung eingeben. Wenn du Battle eingibst, sollte es heißen: "Du hast das Yveltal zu einer Schlacht herausgefordert!". Wenn Sie run eingeben, soll es heißen: "Sie können nicht feige laufen", aber wenn Sie etwas eingeben, wird nur die gleiche Frage gestellt: "Willst du rennen oder gegen das Yveltal kämpfen?". Was ich brauche, ist die while-Schleife zu verlassen, und wenn Sie entweder run oder battle eingeben, wird die Nachricht für diesen Befehl angezeigt. Hier ist der Code und ich könnte Hilfe von jedem nutzen, danke!Python Pokemon Spiel während Schleifen

from time import sleep 
def start(): 
    sleep(2) 
    print "Hello there, what is your name?" 
    name = raw_input() 
    print "Oh.. So your name is %s!" % (name) 
    sleep(3) 
    print"\nWatch out %s a wild Yveltal appeared!" % (name) 
    sleep(4) 
    user_input = raw_input("Do you want to Run or Battle the Yveltal?" "\n") 
    while raw_input() != 'Battle' or user_input == 'battle' != 'Run' or user_input == 'run': 
     print("Do you want to Run or Battle the Yveltal? ") 
    if user_input == 'Battle' or user_input == 'battle': 
     print("You challenged Yveltal to a battle!") 
    elif user_input == 'Run' or user_input == 'run': 
     print("You can't run you coward!") 
+0

Also, was ist die Frage? – Arman

Antwort

0

Ihre while-Schleife ist mit Fehlern oder Fehlern gespickt. Versuchen Sie dies:

while user_input.lower() != "battle" or user_input.lower() != "run": Verwenden Sie die .lower() - Funktion, so dass Sie nicht für "RuN" oder "BaTTle" planen müssen. Es konvertiert die Zeichenfolge in Kleinbuchstaben, sodass Sie das Wort einfach überprüfen können. Außerdem sollten Sie Eingabe verwenden() anstelle von raw_input() Ehrlich gesagt würde ich Code wie folgt strukturiert:

user_input = input("Run or battle?\n") #or whatever you want your question 
user_input = user_input.lower() 
while True: 
    if user_input == "battle": 
      print("You challenged Yveltal to a battle!") 
      break 
    elif user_input == "run": 
      print("You can't run you coward!") 
      user_input = input("Run or battle?\n") 
      user_input = user_input.lower() 
      break 
    else: 
      user_input = input("Run or battle?\n") 
      user_input = user_input.lower() 

Man könnte mehr Glück wie das mit Code.

+0

Es tut mir leid, einen anderen Gefallen zu bitten, aber ich möchte, dass die Meldung "Run or Battle" erneut erscheint, wenn Sie run eingeben, wenn Sie "run" tippen würde es "Sie können nicht feige laufen" dann zeigen Die "Run or Battle" -String jedes Mal, wenn Sie Run eingeben, aber dies wäre nur, wenn Sie nur "Run" eingegeben haben, aber der Rest ist wirklich hilfreich! Außerdem habe ich raw_input benutzt, weil du nicht 'run' tippen musst, du könntest einfach run tippen. Es stellt auch nicht die Frage neu, ob Sie nicht entweder "run" oder "battle" antworten, alles was es sagt ist, dass es nicht definiert ist, anstatt dieselbe Frage zu stellen und auf eine gültige Antwort zu warten. – Adal

+0

input() gibt eine Zeichenfolge zurück. Der Benutzer kann das Wort einfach regelmäßig eingeben. Hast du diesen Code auch versucht? Es funktioniert für mich, wie ich verstehe, dass du es willst. – SH7890

+0

In Ihrer Antwort unten ist die Else-Anweisung falsch eingerückt. Deshalb wird es nicht richtig funktionieren. Einrücken Sie es noch einmal und Sie sollten gut sein. – SH7890