Python-反恐精英

# _*_ coding:utf-8 _*_
# Author: 林楠
# edit time: 2022/4/24 22:24
# name: 反恐精英.py
# Product: PyCharm

# 案例:反恐精英
# 三个恐怖分子与反恐精英街头枪战,每人设定100血,生命值为0时死亡。一方全部死亡,枪战结束
"""
反恐精英通过个人状态值描述自己:
无伤:生命值 100
轻伤:生命值 70-99
重伤:生命值 1-69
挂了:生命值 0
"""
import random

"""
分析:
--------------基础版----------------------------------
1.定义人类,描述公共属性 life:100 name:姓名
2.定义出英雄与恐怖分子类
3.定义主函数描述枪战过程main,创建两个对象
4,定义开枪方法,分成两个,Hero,Is都有
定义的方法要传入被射击的对象
被射击对象的生命值要减少
5,主程序中调用开枪操作
6,开枪操作后要在主程序显示每个人的状态信息
7,定义Person类的__str__方法,用于显示每个人的状态
8,设置我们的开枪操作为反复操作,
再设置停止条件:一方生命值《=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,p):
damage = 40
print("%s向%s开枪,造成了%d伤害" % (self.name,p.name,damage))
p.life -= damage

class Is(Person):
def fire(self,p):
damage = 10
print("%s向%s开枪,造成了%d伤害" % (self.name,p.name,damage))
p.life -= damage

def main():
h = Hero("[英雄]")
is1 = Is("[不要命]")

while True: #这里的True代表无限循环
h.fire(is1)
is1.fire(h)
print(h)
print(is1)
# 设置结束条件
if h.life <= 0:
print("%s死亡,枪战结束" % h.name)
break
if is1.life <= 0:
print("所有恐怖分子死亡,枪战结束")
break


# h.fire(is1)
# is1.fire(h)
# print(h)
# print(is1)
#
# h.fire(is1)
# is1.fire(h)
# print(h)
# print(is1)

main()
'''


"""
--------------------修复版---------------------------
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,否则正常减伤
"""

'''
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):
damage = 40
print("%s向%s开枪,造成了%d伤害" % (self.name,p.name,damage))
if p.life < damage:
p.life = 0
else:
p.life -= damage
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" %(self.name,state)


class Is(Person):
def fire(self,p):
damage = 10
print("%s向%s开枪,造成了%d伤害" % (self.name,p.name,damage))
if p.life < damage:
p.life = 0
else:
p.life -= damage

def main():
h = Hero("[英雄]")
is1 = Is("[不要命]")

while True: #这里的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()
'''

"""
--------------------加强版-----------------------------
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.创建3个恐怖分子对象
3个对象都要开枪,3个对象都要打印状态
12.修复结束条件为三个恐怖分子都死亡,三个满足同时死亡and
13,解决3个恐怖分子开枪的问题
随机数:random
步骤1:使用random --- import random 必须写在所有程序的前面
步骤2:使用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,p):
damage = 20
print("%s向%s开枪,造成了%d伤害" % (self.name,p.name,damage))
if p.life < damage:
p.life = 0
else:
p.life -= damage
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" %(self.name,state)


class Is(Person):
def fire(self,p):
damage = 2
print("%s向%s开枪,造成了%d伤害" % (self.name,p.name,damage))
if p.life < damage:
p.life = 0
else:
p.life -= damage

def main():
h = Hero("[英雄]")
is1 = Is("[不要命]")
is2 = Is("[不怕死]")
is3 = Is("[还有谁]")

while True: #这里的True代表无限循环
# 产生1到3的随机数
x = random.randint(1,3)
if x == 1:
h.fire(is1)
elif x == 2:
h.fire(is2)
else:
h.fire(is3)

is1.fire(h)
is2.fire(h)
is3.fire(h)
print(h)
print(is1)
print(is2)
print(is3)
print()
# 设置结束条件
if h.life <= 0:
print("%s死亡,枪战结束" % h.name)
break
if is1.life <= 0 and is2.life <= 0 and is3.life <= 0:
print("所有恐怖分子死亡,枪战结束")
break
main()

'''
"""
---------------------超级加强版-----------------------------------
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.创建3个恐怖分子对象
3个对象都要开枪,3个对象都要打印状态
12.修复结束条件为三个恐怖分子都死亡,三个满足同时死亡and
13,解决3个恐怖分子开枪的问题
随机数:random
步骤1:使用random --- import random 必须写在所有程序的前面
步骤2:使用random.randint(1,3)可以产生1到3的随机数,产生一个随机数,判断是几就向几号开枪

### 超级加强版
1,加入开枪射击命中概率
产生一个随机数,如果在范围内,命中,否则不命中;
文字效果要变化;
两处开枪要重新制作
2,加入开枪伤害值波动
产生一个随机数,作为伤害值
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,p):
# 加入命中率
hit = random.randint(1,100)
if hit >20: #命中率80%
# 判断当前射击对象是否是尸体,如果是,鞭尸,else ,print
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("%s枪法真臭,可以死了" % self.name)

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" %(self.name,state)

class Is(Person):
def fire(self,p):
damage = random.randint(5,15)
hit = random.randint(1,100)
if hit > 70:
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("[英雄]")
is1 = Is("[不要命]")
is2 = Is("[不怕死]")
is3 = Is("[还有谁]")
while True: #这里的True代表无限循环
# 产生1到3的随机数
x = random.randint(1,3)
if x == 1:
h.fire(is1)
elif x == 2:
h.fire(is2)
else:
h.fire(is3)

is1.fire(h)
is2.fire(h)
is3.fire(h)
print(h)
print(is1)
print(is2)
print(is3)
print()
# 设置结束条件
if h.life <= 0:
print("%s死亡,枪战结束" % h.name)
break
if is1.life <= 0 and is2.life <= 0 and is3.life <= 0:
print("所有恐怖分子死亡,枪战结束")
break
main()
posted @   妖孽成佛  阅读(334)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示