python 返回值 -1_Python返回值为1的所有变量

(作为参考,我问了一个关于同一个脚本here的单独问题,这个问题得到了回答)

我在学习Python,这是我的第一个程序。我尝试创建一个非常基本的类似RPG的游戏,你选择一个角色,给这个角色一个武器,然后告诉它攻击另一个具有伤害的角色,基于使用该角色和武器的属性的公式。在

我肯定我做了一些明显的错误,但是我不能让我的[variable]=\uuuyu\u公式返回除1以外的任何值,即使公式右侧使用的变量独立地返回正确的值。在

这就是我的“Char”(character)类的样子(抱歉,如果我提供的太多了——尽量不要遗漏任何可能有帮助的内容):def __init__(self, name):

self.name = name

self.hp = 300

self.mp = 10

self.strn = 1

self.dex = 1

self.armor = 0

self.xp = 0

self.items = []

self.spells = []

self.weapon = weapon

self.attack_speed = self.dex

self.intact_bones = ["right arm", "left arm", "right leg", "leg leg",

"skull", "sternum", "nose"] # JUST ASSUME RIGHT SIDE

# IS PRIMARY SIDE FOR NOW

self.broken_bones = [] ### define what to do per bone if bone is in this list

self.base_dmg = self.strn * self.weapon.wgt

self.break_bone_chance = (self.weapon.impact / 50) * 100

self.bleed_chance = (self.weapon.sharp / 50) * 100

self.strike_dmg = self.base_dmg # NEED TO ADD A RANDOM ELEMENT TO DAMAGE

def break_crit(self, target):

print "checking break_crit" # ALL THESE PRINTS ARE TEMPORARY TO TEST THE VARIABLES

print "self.break_bone_chance = %r" % self.break_bone_chance

print "self.base_dmg = %r" % self.base_dmg

print "self.strike_dmg = %r" % self.strike_dmg

print "len(target.intact_bones) = %r" % len(target.intact_bones)

print "self.weapon = %r" % self.weapon.name

print "self.weapon.impact = %r" % self.weapon.impact

print "self.weapon.wgt = %r" % self.weapon.wgt

if (randint(1, 100) <= self.break_bone_chance) and (self.strike_dmg > 0) and (len(target.intact_bones) != 0):

random.shuffle(target.intact_bones)

target.new_broken_bone = target.intact_bones.pop()

target.broken_bones.append(target.new_broken_bone)

print "%s hit %s square in the %s with his %s, cracking his %s!" % (self, target, target.new_broken_bone, self.weapon, target.new_broken_bone)

self.bleed_crit(target)

else:

self.bleed_crit(target)

def bleed_crit(self, target):

if randint(1, 100) <= self.bleed_chance and self.strike_dmg > 0:

pass

else:

pass # GO TO NEXT ACTION

def attack(self, target):

###self.strike_dmg = self.dmg - target.armor # NEED TO ADD A RANDOM ELEMENT TO DAMAGE###

if self.strike_dmg > 0:

target.hp -= self.strike_dmg

print "%s hit %s for %s damage!" % (self.name, target.name, self.strike_dmg)

self.break_crit(target)

else:

print "%s's strike did no damage!" % self.name

我的武器类属于装备顶级类:

^{pr2}$

然后我运行一个简单的:

院长。攻击汉密尔顿是另一个角色

让我困惑的是,当我用“打印…”来测试数字时,打印出来的数字是正确的。例如,自我武器.wgt如预期的那样显示为3,自我.strn按预期3打印,并且自我武器冲击按预期打印6。但是,在自我突破机会,我已经决定了自我武器冲击返回为1(通过临时自我突破机会=仅限于自我武器冲击),和自我打击也回到1。在

同样,我可以提供“武器”和“字符”的代码,如果它能处理的话,但我试图省略任何不必要的东西。根据我提供的信息,有什么不对劲的吗?在

谢谢你的帮助。在


版权声明:本文为weixin_35786588原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。