私はテキストゲーム用のリアルタイムバトルシステムを作成しようとしています。 NPCが同じことをしている間に、プレイヤーが行動して再び行動できるようになるまで数秒待たなければならないようにしたい。Pythonでスレッドを再利用
私は小さな例を書いた:
import threading
import time
def playerattack():
print("You attack!")
time.sleep(2)
def npcattack():
while hostile == True:
print("The enemy attacks!")
time.sleep(3)
p = threading.Thread(target=playerattack)
n = threading.Thread(target=npcattack)
hostile = False
while True:
if hostile == True:
n.start()
com = input("enter 'attack' to attack:")
if 'attack' in com:
hostile = True
p.start()
の例では、最初の攻撃のために正常に動作します: 私は「攻撃」を入力し、敵対的なフラグがTrueに設定されている、NPCの攻撃スレッドが開始され、私は 'RuntimeError:スレッドは一度しか起動できません'というメッセージが表示されることがあります。
エラーを発生させずにそのスレッドを再利用する方法はありますか?それとも私はこれについて間違っているのだろうか?
はい。あなたはスレッドなしでこのことを書いた方が良いです。 – pvg
この例題でスレッドが必要な理由をラバーダックに説明できますか? – zwer
あなたはPythonで直接スレッドを殺すことはできませんが、マルチスレッドではスレッドによく似ています。スレッドの使用方法を学ぶためにスレッドを使用している可能性があります。 – thesonyman101