2017-05-22 15 views
-1

したがって、ループするたびにattackwordのオプションの1つが選択されます。私はそれがループするたびにランダムなものを選ぶことをお勧めします。random.choiceは1つのオプションのみを選択します

注:タイムアウトは%dにとどまる必要があります。

from threading import Timer 
    import time 
    import random 
    import signal 

    attackword = ['strike', 'damage'] 
    attackwords = random.choice(attackword) 

    monsterhp = int(800) 
    y = 150 
    while monsterhp > 0: 
     def TimedInput(prompt='', timeout=20, timeoutmsg=None): 
      def timeout_error(*_): 

       raise TimeoutError 

      signal.signal(signal.SIGALRM, timeout_error) 
      signal.alarm(timeout) 
      try: 
       answer = input(prompt) 
       signal.alarm(0) 
       return answer 
      except TimeoutError: 
       if timeoutmsg: 
        print(timeoutmsg) 
       signal.signal(signal.SIGALRM, signal.SIG_IGN) 
       return None 
     timeout = 4 
     timeoutmsg = 'You ran out of time.' 
     print(" ") 
     prompt = "You have %d seconds Type %s to hit the monster\nType here: " % (timeout, attackwords) 
     answer = TimedInput(prompt, timeout, timeoutmsg) 

      if answer == attackwords: 
       print("You strike the monster") 
       time.sleep(1) 
       monsterhp = monsterhp - y 
       print("War Lord Health:", monsterhp) 
      elif answer != attackwords and answer != None: 
       print("Incorrect answer. No damage dealt.") 

答えて

2

更新:あなたは単語のコピーが後に利用可能であることを必要としたよう

、あなたは、ループ内attackwords割り当てることができます。

promptの直前にattackwords = random.choice(attackword)を追加し、promptの引数を% (timeout, attackwords)のままにします。

残りのコード(elif ..など)は、変更する必要はありません。


現在、あなたはrandom.choice()によって返されるattackwords 1に特定の値を代入しています。

希望する動作を得るには、実際に単語を表示する場所のrandom.choice()を実行します。

prompt = "You have %d seconds Type %s to hit the monster\nType here: " % (timeout, random.choice(attackword)) 
+0

これは1ビットで機能しました。私はちょうど私のコードの下の部分を更新しました。下にあるelifのステートメントがあなたが投稿したバージョンと同期する方法がありますか?今のように、更新された単語ではなく、常に1つの単語をチェックします。ありがとう – mykill456

+0

おっと、気付かなかった - 私はそれに応じて答えを更新しました。基本的には、あなたが使用する直前に、あなたの 'attackwords'割り当てをループに入れてください。それが動作するかどうか私に教えてください! – Windmill

+0

そういう小さなことがうまくいきました。迅速な応答ありがとう – mykill456

関連する問題