Python3如何决定修改哪个变量?

时间:2014-12-08 21:37:17

标签: string multithreading variables python-3.x

我正在开发一个多线程模拟器脚本,来自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 非常感谢。

0 个答案:

没有答案