游戏模式: 假设有怪兽(monster)和英雄(hero)两个角色,二者为敌对状态 假设两个角色初始血量为100,攻击力的伤害服从随机分布(7,17),二者相互攻击,判断谁获胜?
import random as rn # 引入随机数 # 定义精灵 class Sprite: def __init__(self,name): self.blood = 100 # 假设初始血量为:100 self.power = 12 # 假设基础攻击能力:12 self.name = name def attack(self, monster): # 假设每一次攻击的伤害 服从随机分布(7,17) minus = rn.randrange(self.power - 5, self.power + 5) print(minus) if monster.has_living(): monster.minus_blood(minus) print(monster.name + ' 剩余血量:\n' + str(monster.blood)+ "\n") # 输出剩余血量 def minus_blood(self,num): self.blood -= num def has_living(self): #判断是否还有血量 if self.blood > 0: return True return False m = Sprite('怪兽*哥斯拉') h = Sprite('迪迦*奥特曼') print(m.name + ' 的初始血量:100') print(h.name + ' 的初始血量:100') while m.has_living() and h.has_living(): print(m.name + ' 对 ' + h.name + ' 造成伤害:' ) m.attack(h) print(h.name + ' 对 ' + m.name + ' 造成伤害:') h.attack(m) if m.has_living(): print(m.name + ' 胜利!') elif h.has_living(): print(h.name + ' 胜利~!') else: print(m.name + ' 和 ' + h.name + '均阵亡!')运行结果:
怪兽*哥斯拉 的初始血量:100 迪迦*奥特曼 的初始血量:100 怪兽*哥斯拉 对 迪迦*奥特曼 造成伤害: 8 迪迦*奥特曼 剩余血量: 92 迪迦*奥特曼 对 怪兽*哥斯拉 造成伤害: 16 怪兽*哥斯拉 剩余血量: 84 怪兽*哥斯拉 对 迪迦*奥特曼 造成伤害: 14 迪迦*奥特曼 剩余血量: 78 迪迦*奥特曼 对 怪兽*哥斯拉 造成伤害: 8 怪兽*哥斯拉 剩余血量: 76 怪兽*哥斯拉 对 迪迦*奥特曼 造成伤害: 9 迪迦*奥特曼 剩余血量: 69 迪迦*奥特曼 对 怪兽*哥斯拉 造成伤害: 8 怪兽*哥斯拉 剩余血量: 68 怪兽*哥斯拉 对 迪迦*奥特曼 造成伤害: 14 迪迦*奥特曼 剩余血量: 55 迪迦*奥特曼 对 怪兽*哥斯拉 造成伤害: 7 怪兽*哥斯拉 剩余血量: 61 怪兽*哥斯拉 对 迪迦*奥特曼 造成伤害: 9 迪迦*奥特曼 剩余血量: 46 迪迦*奥特曼 对 怪兽*哥斯拉 造成伤害: 8 怪兽*哥斯拉 剩余血量: 53 怪兽*哥斯拉 对 迪迦*奥特曼 造成伤害: 9 迪迦*奥特曼 剩余血量: 37 迪迦*奥特曼 对 怪兽*哥斯拉 造成伤害: 8 怪兽*哥斯拉 剩余血量: 45 怪兽*哥斯拉 对 迪迦*奥特曼 造成伤害: 15 迪迦*奥特曼 剩余血量: 22 迪迦*奥特曼 对 怪兽*哥斯拉 造成伤害: 12 怪兽*哥斯拉 剩余血量: 33 怪兽*哥斯拉 对 迪迦*奥特曼 造成伤害: 10 迪迦*奥特曼 剩余血量: 12 迪迦*奥特曼 对 怪兽*哥斯拉 造成伤害: 8 怪兽*哥斯拉 剩余血量: 25 怪兽*哥斯拉 对 迪迦*奥特曼 造成伤害: 10 迪迦*奥特曼 剩余血量: 2 迪迦*奥特曼 对 怪兽*哥斯拉 造成伤害: 16 怪兽*哥斯拉 剩余血量: 9 怪兽*哥斯拉 对 迪迦*奥特曼 造成伤害: 7 迪迦*奥特曼 剩余血量: -5 迪迦*奥特曼 对 怪兽*哥斯拉 造成伤害: 14 怪兽*哥斯拉 剩余血量: -5 怪兽*哥斯拉 和 迪迦*奥特曼均阵亡!