我正在开发一个多线程模拟器脚本,来自A队的机器人正在与B队战斗。所有TeamA机器人攻击对手(来自TeamB)的数量最少,直到它死亡然后他们(应该)从攻击转移到例如TeamB1_hitpoints到TeamB2_hitpoints。
为了实现这一点,我尝试使用字符串,但它不起作用。为什么我这样尝试是因为我使用了一个单独的"主管"决定哪个对手应该被TeamA和TeamB的所有机器人攻击并将其写入这样的变量的线程(这是我的"主管"线程看起来像):
class S1(threading.Thread):
def run(self):
S1loopcount=0
global ingame, TeamA_target, TeamB_target
while positive(A1_hitpoints+A2_hitpoints+A3_hitpoints) > 0 and positive(B1_hitpoints+B2_hitpoints+B3_hitpoints) > 0:
while (TeamA1_hitpoints+TeamA2_hitpoints+TeamA3_hitpoints) > 0 and ingame=1:
if TeamB1_hitpoints > 0:
TeamA_target="TeamB1"
else:
if TeamB2_hitpoints > 0:
TeamA_target="TeamB2"
else:
if TeamB3_hitpoints > 0:
TeamA_target="TeamB3"
while (TeamB1_hitpoints+TeamB2_hitpoints+TeamB3_hitpoints) > 0 and ingame=1:
if TeamA1_hitpoints > 0:
TeamB_target="TeamA1"
else:
if TeamA2_hitpoints > 0:
TeamB_target="TeamA2"
else:
if TeamA3_hitpoints > 0:
TeamB_target="TeamA3"
ingame=0
实际的僵尸程序线程看起来像这样:
class BotA1(threading.Thread):
def run(self):
global ...yeah, declaring many variables
while TeamA1_hitpoints>0 and ingame = 1
if #???# > 0:
#???#=(#???#-20)
time.sleep(1)
而#???#是有问题的部分,因为我最初想象它是:
int(str(TeamA_target)_hitpoints)
这样主管线程就可以决定哪个僵尸程序应该被整个团队攻击。我想,它会表现得像#34; TeamB1_hitpoints"," TeamB2_hitpoints"或" teamB3_hitpoints",因此程序会将其解释为变量的名称。
我也试过用以下字符串进行实验:
int(str("{0}_hitpoints".format(TeamA_target)))
但我仍然无法让它发挥作用。我只需要根据主管的决定让teamA和teamB攻击某个对手机器人。这可以通过对vatiables / strings的一些操作来完成吗? 任何有效的解决方案(可能是最简单的解决方案,因为我是一个菜鸟)受到高度赞赏:3 非常感谢。