-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.")
これは1ビットで機能しました。私はちょうど私のコードの下の部分を更新しました。下にあるelifのステートメントがあなたが投稿したバージョンと同期する方法がありますか?今のように、更新された単語ではなく、常に1つの単語をチェックします。ありがとう – mykill456
おっと、気付かなかった - 私はそれに応じて答えを更新しました。基本的には、あなたが使用する直前に、あなたの 'attackwords'割り当てをループに入れてください。それが動作するかどうか私に教えてください! – Windmill
そういう小さなことがうまくいきました。迅速な応答ありがとう – mykill456