[我是Python的业余爱好者,我正在尝试创建一个程序来确定我正在开发的游戏的主动性,其中一部分是确保两个角色的打号速度不同。”每个字符都是具有以下类代码的对象:
class Character(object):
def __init__ (self, name, speed, agility, otick, tick):
self._name = name
self._speed = int(speed)
self._agility = int(agility)
self._otick = int(otick)
self._tick = int(tick)
以及以下用于确定“刻度速度”的代码:
if createCharacter._speed == 0: createCharacter.set_otick(-1)
elif createCharacter._speed == 1: createCharacter.set_otick(30)
elif createCharacter._speed == 2: createCharacter.set_otick(27)
elif createCharacter._speed == 3: createCharacter.set_otick(24)
elif createCharacter._speed == 4: createCharacter.set_otick(21)
elif 5 <= createCharacter._speed <= 6: createCharacter.set_otick(18)
elif 7 <= createCharacter._speed <= 9: createCharacter.set_otick(15)
elif 10 <= createCharacter._speed <= 11: createCharacter.set_otick(14)
elif 12 <= createCharacter._speed <= 13: createCharacter.set_otick(13)
elif 14 <= createCharacter._speed <= 15: createCharacter.set_otick(12)
elif 16 <= createCharacter._speed <= 17: createCharacter.set_otick(11)
elif 18 <= createCharacter._speed <= 22: createCharacter.set_otick(10)
elif 23 <= createCharacter._speed <= 28: createCharacter.set_otick(9)
elif 29 <= createCharacter._speed <= 34: createCharacter.set_otick(8)
elif 35 <= createCharacter._speed <= 43: createCharacter.set_otick(7)
elif 44 <= createCharacter._speed <= 61: createCharacter.set_otick(6)
elif 62 <= createCharacter._speed <= 97: createCharacter.set_otick(5)
elif 98 <= createCharacter._speed <= 169: createCharacter.set_otick(4)
elif 170 <= createCharacter._speed <= 225: createCharacter.set_otick(3)
createCharacter.set_tick(createCharacter._otick)
我想知道如何编写代码,以便在战斗中有三个或更多字符时,一个命令可以检查其中至少两个字符是否具有相同的“滴答”值,以便在执行倒数计时程序时,不会有两个字符同时达到0。
我的目的是在角色创建时进行比较检查,并且当角色的回合结束并且他们的“刻度”返回到其原始值(存储在“ otick”中)时。如果至少两个值相等,则程序将比较两个字符的“敏捷性”属性,以较低者为准,将1个添加到“滴答”中,然后进行另一个比较以确保未创建另一个并列。如果两个敏捷都相等,那么我希望它(本质上)掷骰子(基于所讨论的敏捷),而失败者获得+1。
谢谢您的考虑。
您可以重写Character类的比较方法(lt,le,gt,ge,eq和ne魔术方法)
例如,您可以执行以下操作:
import random
class Character(object):
def __init__ (self, name, speed, agility, otick, tick):
self._name = name
self._speed = int(speed)
self._agility = int(agility)
self._otick = int(otick)
self._tick = int(tick)
def __gt__(self,other):
if !isinstance(other,Character):
raise Exception("Invalid Comparison")
if self.agility == other.agility:
# if they have the same values you can "roll a dice"
return random.randint(0,100) % 2 == 0
# Here you can check and compare the values of self and other
return self.agility > other.agility
现在,如果您与实例进行比较,
player1 = Character()
player2 = Character()
# Now you can compare them using normal operator and apply logic after
if player1 > player2: #if this are the same it will make a random choice
player1.agility +=1
else:
player2.agility +=2 # you could add any logic