我正在用Python做一个迷你游戏。这个想法是,当对象在固定距离内靠近播放器时,线程将启动并重复一定次数。
例如:
class RepeatedTimer(object):
def __init__(self, interval, function, *args, **kwargs):
self._timer = None
self.interval = interval
self.function = function
self.args = args
self.kwargs = kwargs
self.is_running = False
self.start()
def _run(self):
self.is_running = False
self.start()
self.function(*self.args, **self.kwargs)
def start(self):
if not self.is_running:
self._timer = Timer(self.interval, self._run)
self._timer.start()
self.is_running = True
def stop(self):
self._timer.cancel()
self.is_running = False
def ObjectHit(player):
player.power = player.power + 5
if((Object_A_pos_x == player_pos_x + distance or Object_A_pos_x == player_pos_x - distance) and
(Object_A_pos_y == player_pos_y + distance or Object_A_pos_y == player_pos_y - distance)):
tA = RepeatedTimer(10, ObjectHit, player)
% Thread t starts after every 10 seconds
else:
t.stop()
我希望许多对象以相同的方式分别影响播放器。例如,对象A靠近玩家23秒,然后对象B出现。所以现在有两个线程,分别是tA和tB。此后,对象A离开,因此线程tA停止,但tB继续运行,直到对象B离开。这些类似地适用于objectC,objectD,...。
我已经阅读了一些有关重用和产生线程的文档,例如ThreadPool
和concurrent.futures
。但是,我是多线程的新手,所以我对此不太清楚。
非常感谢您的帮助。