2017-02-11 22 views
1

さて、私はポケモンのテキストアドベンチャーゲームをコーディングしています。私はwhileループで助けが必要です。私はすでにwhileループ部分をやっている。しかし、動作していない部分は、2つのraw_inputs run、battleを選択する選択肢があります。どちらか1つを押すとメッセージは表示されません。それだけで、私はそれもプログラムした質問を繰り返します。質問は「あなたはイヴァルタルを実行するか戦いたいですか?」と尋ねます。 ipythonセッションで "Run"または "Battle"をタイプすることができます。あなたがBattleとタイプすると、「あなたはYveltalに戦いに挑戦しました!」と言うはずです。 "あなたはあなたを臆病者にすることはできません"と言っているrunをタイプすると、何かを入力すると、同じ質問が "Yveltalを実行するか、戦いたいですか?"という質問が表示されます。私が助けたいのは、whileループを離れることです。実行またはバトルをタイプすると、そのコマンドのメッセージが表示されます。ここにコードがあり、私は誰からも助けを受けることができます、ありがとう!Python Pokemon Game While Whileループ

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

だから、どういうのですか? – Arman

答えて

0

あなたのwhileループはエラーまたは間違いで詰まっています。これを試してください:

while user_input.lower() != "battle" or user_input.lower() != "run": .lower()関数を使用すると、 "RuN"または "baTTle"を計画する必要がなくなります。文字列を小文字に変換するので、単語を確認できるだけです。また、あなたが代わりにraw_inputの入力を()を使用する必要があります()正直なところ、私はこのようにあなたのコードを構築します:

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() 

あなたはそのようなコードとのより良い運を持っているかもしれません。

+0

もう一度お話して申し訳ありませんが、実行した場合は「実行またはバトル」メッセージをもう一度お聞きしたいと思います。「実行する」と入力した場合は、「あなたは臆病者を実行できません。実行するたびに「Run or battle」という文字列が表示されますが、「Run」だけを入力した場合にのみ表示されますが、残りは本当に役に立ちます。また、 'run'と入力する必要がないのでraw_inputを使用しました。単にrunと​​入力するだけです。あなたが有効な応答を待っているのと同じ質問をするのではなく、定義されていないと言われる "実行"または "戦闘"のいずれかに答えることができない場合、質問に再度質問しません。 – Adal

+0

input()は文字列を返します。ユーザーは単語を定期的に入力するだけです。また、このコードを試しましたか?それは私があなたがそれがほしいと思う方法を私のために働く。 – SH7890

+0

以下の答えでは、else文が間違ってインデントされています。それが正しく動作しない理由です。もう一度インデントしてください。 – SH7890