あなたが提案したタスクを行うことは、あなたが推測したほど簡単ではありません。これを行うためにsignal
モジュールを使用する方が簡単です(私は答えI linkedの修正版を使用してコードが組み込まれている)
import signal, time
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
monsterhp = int(800)
y = 150
while monsterhp > 0:
timeout = 4
timeoutmsg = 'You ran out of time.'
print(" ")
prompt = "You have %d seconds Type 'attack' to hit the monster\nType here: " % timeout
answer = TimedInput(prompt, timeout, timeoutmsg)
if answer == "attack":
print("You strike the monster")
time.sleep(1)
monsterhp = monsterhp - y
print("War Lord Health:", monsterhp)
注:これは唯一、すべてのUNIX/MACシステム上
に動作しますあなたはあなたのコードの改良版のために、これまであなたのwhileループを変更することができます
:)
while monsterhp > 0:
timeout = 4
timeoutmsg = 'You ran out of time.'
print(" ")
prompt = "You have %d seconds Type 'attack' to hit the monster\nType here: " % timeout
answer = TimedInput(prompt, timeout, timeoutmsg)
if answer == "attack":
print("You strike the monster")
time.sleep(1)
monsterhp = monsterhp - y
print("War Lord Health:", monsterhp)
elif answer == None:
print("The War Lord has killed you, you're now dead")
print("Thanks for playing, \nGAME OVER")
break
をImはあなたが私に何を言うことができるスレッドために、新しいスレッドまだ彼の応答イムから取る何を意味するのか全くわからないイムを@abccdどこに行く必要がありますか?ありがとう、それは機能を持っている必要がありますか私はまだ私のバージョンのほとんどを使用することはできますか? – mykill456
あなたはどのOSを使用していますか? – abccd
Mac OSの最新のpython – mykill456