反恐精英基础版
一个精英对一个匪徒。
分析
- 定义人类,描述公共属性
life:100 ,name:姓名要传参 - 定义出英雄与恐怖分子类
- 定义主函数描述枪战过程
main ,创建两个对象 - 定义开抢方法,分成两个方法,
Hero 、Is 都有
- 定义的方法要传入被射击的对象
- 被射击对象的生命值要减少
- 主程序中调用开抢操作
- 开抢操作后,要在主程序中显示每个人的状态信息
- 定义
Person 类中的 __str__ 方法,用于显示每个人的状态 - 设置开抢操作为反复操作
- 设置枪战停止条件:一方生命值<=0
- 停止循环使用break
代码实现
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, person):
damage = 40
print("%s向%s开抢,造成了[%d]伤害" % (self.name, person.name, damage))
person.life -= damage
class Is(Person):
def fire(self, person):
damage = 90
print("%s向%s开抢,造成了[%d]伤害" % (self.name, person.name, damage))
person.life -= damage
def main():
h = Hero("【英雄】")
is1 = Is("【不要命】")
while True:
h.fire(is1)
is1.fire(h)
print(h)
print(is1)
print()
if h.life <= 0:
print("%s死亡,枪战结束" % h.name)
break
if is1.life <= 0:
print("所有恐怖分子全部死亡,枪战结束")
break
main()
反恐精英修复版
分析
- 修复英雄的信息显示模式,状态描述
- 100:无伤
- 70-99:轻伤
- 1-69:重伤
- 0:挂了
- 修复生命值为负的问题
- 射击时,如果生命值<伤害值,生命值=0,否则正常减生命
- 三元表达式:
变量 = 成立值 if 条件 else 不成立值
代码实现
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, person):
damage = 40
print("%s向%s开抢,造成了[%d]伤害" % (self.name, person.name, damage))
person.life = 0 if person.life < damage else (person.life - damage)
def __str__(self):
state = ""
if self.life == 100:
state = "无伤"
elif 70 <= self.life < 100:
state = "轻伤"
elif 1 <= self.life < 70:
state = "重伤"
elif self.life <= 0:
state = "挂了"
return "%s当前的状态为:%s" % (self.name, state)
class Is(Person):
def fire(self, person):
damage = 20
print("%s向%s开抢,造成了[%d]伤害" % (self.name, person.name, damage))
person.life = 0 if person.life < damage else (person.life - damage)
def main():
h = Hero("【英雄】")
is1 = Is("【不要命】")
while True:
h.fire(is1)
is1.fire(h)
print(h)
print(is1)
print()
if h.life <= 0:
print("%s死亡,枪战结束" % h.name)
break
if is1.life <= 0:
print("所有恐怖分子全部死亡,枪战结束")
break
main()
反恐精英加强版
一个精英对三个匪徒。
分析
- 创建三个恐怖分子对象,三个对象都要开抢,三个对象都要打印状态
- 修复结束条件为三个恐怖分子都死亡,三个满足同时死亡 and
- 解决向三个恐怖分子开抢的问题
- 随机数:random
- 使用random:所有代码前增加
import random - 使用
random.randint(1, 3) 可以产生1到3的随机数 - 产生一个随机数,判断是几就向几号敌人开枪
代码实现
反恐精英超级加强版
分析
- 加入开枪射击命中率
- 加入开枪伤害值波动
- 加入鞭尸文字显示效果
代码实现
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, person):
hit = random.randint(1, 100)
if hit > 20:
if person.life <= 0:
print("%s都死了,就不要鞭尸了" % person.name)
else:
damage = random.randint(41, 60)
print("%s向%s开抢,造成了[%d]伤害" % (self.name, person.name, damage))
person.life = 0 if person.life < damage else (person.life - damage)
else:
print("没有打到恐怖分子,这什么垃圾枪法~~~")
def __str__(self):
state = ""
if self.life == 100:
state = "无伤"
elif 70 <= self.life < 100:
state = "轻伤"
elif 1 <= self.life < 70:
state = "重伤"
elif self.life <= 0:
state = "挂了"
return "%s当前的状态为:%s" % (self.name, state)
class Is(Person):
def fire(self, person):
damage = random.randint(1, 20)
hit = random.randint(1, 100)
if hit > 70:
print("%s向%s开抢,造成了[%d]伤害" % (self.name, person.name, damage))
person.life = 0 if person.life < damage else (person.life - damage)
else:
print("%s枪法不行呀,再去练练吧~~~" % self.name)
def main():
h = Hero("【英雄】")
is1 = Is("【不要命】")
is2 = Is("【不怕死】")
is3 = Is("【还有谁】")
while True:
x = random.randint(1, 3)
if x == 1:
h.fire(is1)
elif x == 2:
h.fire(is2)
else:
h.fire(is3)
if is1.life <= 0 and is2.life <= 0 and is3.life <= 0:
print("所有恐怖分子全部死亡,枪战结束")
break
is1.fire(h)
is2.fire(h)
is3.fire(h)
if h.life <= 0:
print("%s死亡,枪战结束" % h.name)
break
print(h)
print(is1)
print(is2)
print(is3)
print()
main()
|