"""
写了大概有1个多小时吧,中途多多少少都出现了一些bug,最终还是码出来,Talk is cheap, show me code!(屁话少说,放码过来)
PS:Markdown文本改了很多次...真的是手残啊
"""
"""
反恐精英案例(基础版)
-----------------------基础版-----------------------
1.定义人类,描述公共属性 life:100 name:姓名要传参
2.定义出英雄与恐怖分子类
3.定义主函数描述枪战过程 main,创建两个对象
4.定义开枪方法,分成两个方法,Hero Is都有
定义的方法要传入被射击的对象
被射击对象的生命值要进行减少
5.主程序中调用开枪操作
6.开枪操作后,要在主程序中显示每个人的状态信息
7.定义Person类的str方法,用于显示每个人的状态
8.设置开枪操作为反复操作
再设置停止条件:一方生命值<=0
停止循环使用break
9.修复英雄的信息显示模式
状态描述 0 - 1- 70 - 99- 100
if..elif.. and组合条件
10.修复生命值为负的问题
射击时如果生命值<伤害值,生命值 = 0,否则正常减生命
11.创建三个恐怖份子对象
三个对象都要开枪,三个对象都要打印状态
12.修复结束条件为三个恐怖份子都死亡
三个满足同时死亡 and
13.解决向三个恐怖份子开枪的问题
随机数:random
步骤1:使用random import random 必须写在所有程序的前面
步骤2:使用random.randint(1,3) 可以产生1到3的随机数
产生一个随机数,判断是几就向几号敌人开枪
14.加入开枪射击命中概率
产生一个随机数,如果在范围内,命中,否则不命中
文字效果要变化
两处开枪都要重新制作
15.加入开枪伤害值波动
产生一个随机数,作为伤害值
16.加入鞭尸文字显示效果
"""
import random
class Person:
def __init__(self, name):
self.name = name
self.life = 100
def __str__(self):
return "%s当前生命值为%d" % (self.name, self.life)
class Hero(Person):
def fire(self, p):
hit = random.randint(1, 100)
if hit > 20:
if p.life == 0:
print("%s都已经死了, 就不要鞭尸了" % p.name)
else:
damage = random.randint(20, 50)
print("%s向%s射击, 造成了%d点伤害" % (self.name, p.name, damage))
if p.life < damage:
p.life = 0
else:
p.life -= damage
else:
print("枪法真臭,这是个臭籽,没有打到恐怖份子")
def __str__(self):
state = ""
if self.life == 100:
state = "无伤"
elif self.life >= 70 and self.life < 100:
state = "轻伤"
elif self.life >= 1 and self.life < 70:
state = "重伤"
elif self.life <= 0:
state = "挂了"
return "%s当前的状态为%s, HP剩余%d" % (self.name, state, self.life)
class Is(Person):
def fire(self, p):
damage = random.randint(5, 15)
hit = random.randint(1, 100)
if hit > 80:
print("%s向%s射击, 造成了%d点伤害" % (self.name, p.name, damage))
if p.life < damage:
p.life = 0
else:
p.life -= damage
else:
print("%s枪法不行啊,回去接着练吧" % self.name)
def main():
h = Hero("【英雄】")
i1 = Is("【恐怖分子中的老大】")
i2 = Is("【恐怖分子中的老二】")
i3 = Is("【恐怖分子中的老三】")
print(h)
print(i1)
while 1:
x = random.randint(1, 3)
if x == 1:
h.fire(i1)
elif x == 2:
h.fire(i2)
elif x == 3:
h.fire(i3)
i1.fire(h)
i2.fire(h)
i3.fire(h)
print(h)
print(i1)
print(i2)
print(i3)
if h.life <= 0:
print("%s已经阵亡, 游戏结束" % h.name)
break
if i1.life <= 0 and i2.life <= 0 and i3.life <= 0:
print("恐怖分子已经全部阵亡, 游戏结束")
break
main()