模拟打怪游戏:怪兽(monster),玩家(hero)
游戏模式:
假设有怪兽(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
怪兽哥斯拉 和 迪迦奥特曼均阵亡!