我一直在学习python,我正在创建一个迷你游戏,目前为止做得很好。我需要给每个玩家一个攻击回合的想法,首先这里是代码:
from random import randint
class Dragon:
def __init__(self,name,health):
self.name = name
self.health = health
def kill(self,target):
while target.health >= 0:
if target.health <= 50:
hit = randint(1,20)
target.health -= hit
print '%s hits %s for %s' %(self.name,target.name,hit)
elif target.health <= 0:
print '%s has killed %s' %(self.name,target.name)
else:
hit = randint(1,50)
if hit >= 40:
target.health -= hit
print "%s critically hits %s for %s" %(self.name,target.name,hit)
else:
target.health -= hit
print "%s hits %s for %s" %(self.name,target.name, hit)
def Dead(self):
if self.health <= 0:
print "%s is dead" %self.name
class Hero:
def __init__(self,name,health):
self.name = name
self.health = health
Diet = Dragon('Diet',200)
Pizza = Hero('Pizza', 100)
if __name__ == '__main__':
Diet.kill(Pizza)
一旦我弄清楚了如何给每个玩家轮换,我会给英雄类添加更多的方法,我的第二个问题是打印玩家死亡的块不起作用,我试着把它嵌套在每个if函数下,它成功了。但我认为我不应该一遍又一遍地重复同样的代码,必须有更好的方法来做到这一点。在
将
kill
方法从while循环中取出,使每次调用该方法时它都只是一次攻击,而不是直到对方死亡。在然后将整个游戏放入while循环中,为结束条件添加一些哨兵值,例如:
在每个循环结束时,检查游戏是否结束,例如,如果所有敌人都死了,或者英雄已经死了,并将
GameIsRunning
设置为false。在编辑:
死选项1
也就是说,
^{pr2}$Dead
方法只打印一条消息。除了向用户显示某某已经死了之外,你不能再使用这个。但是如果你想这样做,可以在attackerskill
方法中调用它。或者在游戏循环中。如果你想在实例死亡时自动调用它,那么我会用一个方法来结束所有的伤害:然后使用
死选项2
如果你想让said
Dead
方法表示事情发生或不发生,它应该有一个布尔签名,例如:然后你可以让游戏来决定如何处理这个人已经死亡的事实。如果你想开始添加多个敌人(大多数游戏最终都会这样做),你可以考虑把它们放在一个集合(列表或字典)中,如果每个敌人还活着,你可以循环使用,如果敌人死了,就把它们移走。那么你的结束条件可以是
这种方式给你一个简单的方式来产生更多的敌人,以及游戏。在
相关问题 更多 >
编程相关推荐