目录
- 基本信息
- 参考代码
1. 基本信息
- 人类
- 属性
姓名
血量
持有的枪 - 方法
安子弹
安弹夹
拿枪(持有抢)
开枪
- 子弹类
- 属性
杀伤力 - 方法
伤害敌人(让敌人掉血)
- 弹夹类
- 属性
容量(子弹存储的最大值)
当前保存的子弹 - 方法
保存子弹(安装子弹的时候)
弹出子弹(开枪的时候)
- 枪类
- 属性
弹夹(默认没有弹夹,需要安装) - 方法
连接弹夹(保存弹夹)
射子弹
2. 参考代码:
- 不完善:血量等问题。。。
创建对象:
# 反恐精英_1
class Person:
def __init__(self, name, gun=None, cartridge=None, bullet_s=None):
self.name = name
self.ph = 100
self.gun = gun
self.cartridge = cartridge
self.bullet_s = bullet_s
def install_bullet(self, num):
# 安装子弹
for i in range(num):
if not self.bullet_s:
print('%s的子弹库没子弹了!' % self.name)
break
elif len(self.cartridge.zidan_list) == self.cartridge.max_num:
break
else:
self.cartridge.baocun(self.bullet_s.pop())
def install_cartridge(self):
# 安装弹夹
self.gun.baocun(self.cartridge)
def __str__(self):
if self.gun:
return '%s的ph为:%d,他有一把%s,%s,%s' % (self.name, self.ph, self.gun.name, self.gun, self.cartridge)
else:
return '%s的ph为:%d, 他没有枪...' % (self.name, self.ph)
def kai_qiang(self, diren):
self.gun.fire(diren)
def diaoxue(self, sha_shang_li):
if self.ph >= 0:
self.ph -= sha_shang_li
else:
self.ph = 0
class Gun(object):
def __init__(self, new_name):
self.name = new_name
self.danjia = None
def baocun(self, danjia_temp):
self.danjia = danjia_temp
def __str__(self):
if self.danjia:
return "%s已安装了弹夹" % self.name
else:
return "%s没有安装弹夹" % self.name
def fire(self, di_ren):
# 从弹夹中拿出一个子弹
zidan_temp = self.danjia.tanchu_zidan()
if zidan_temp:
# 让子弹去伤害敌人
zidan_temp.shanghai(di_ren)
else:
print("%s的弹夹没子弹了,请安装子弹" % self.name)
class Danjia(object):
def __init__(self, new_max_num):
self.max_num = new_max_num
self.zidan_list = []
def baocun(self, zidan_temp):
if len(self.zidan_list) < self.max_num:
self.zidan_list.append(zidan_temp)
else:
print('弹夹已满,装不进去了!!!')
def __str__(self):
return "弹夹:%d/%d" % (len(self.zidan_list), self.max_num)
def tanchu_zidan(self):
if len(self.zidan_list) > 0:
return self.zidan_list.pop()
else:
return None
class Bullet(object):
def __init__(self, new_shashangli):
self.shashangli = new_shashangli
def shanghai(self, di_ren):
di_ren.diaoxue(self.shashangli)
def __str__(self):
return '一颗子弹的杀伤力为:%d' % self.shashangli
实例化对象并CS
# 反恐精英_2
from 练习.反恐精英_1 import *
print('创建两个要CS的人')
qjh = Person(name='乔')
lqh = Person(name='刘')
print(qjh)
print(lqh)
print('\n创建两把枪')
ak47_1 = Gun('AK47_1')
ak47_2 = Gun('AK47_2')
print(ak47_1)
print(ak47_2)
print('\n创建两个弹夹')
dan_jia_1 = Danjia(20) # 表示最多容纳20发子弹
dan_jia_2 = Danjia(20) # 表示最多容纳20发子弹
print(dan_jia_1)
print(dan_jia_2)
print('\n创建两个子弹仓库和子弹')
bullet_s1 = [Bullet(10) for i in range(25)] # 10表示每颗子弹的杀伤力
bullet_s2 = [Bullet(10) for j in range(19)]
print(bullet_s1[0])
print('\n给两个要CS的人加装备')
qjh.gun = ak47_1
qjh.cartridge = dan_jia_1
qjh.bullet_s = bullet_s1
lqh.gun = ak47_2
lqh.cartridge = dan_jia_2
lqh.bullet_s = bullet_s2
print(qjh)
print(lqh)
print('\n两个人安装子弹')
qjh.install_bullet(18)
lqh.install_bullet(2)
print(qjh)
print(lqh)
print('\n两个人安装弹夹')
qjh.install_cartridge()
lqh.install_cartridge()
print(qjh)
print(lqh)
print('\nqjh再安装几颗子弹')
qjh.install_bullet(4)
print(qjh)
print(lqh)
print('\n来吧,互相伤害啊!!!')
for i in range(4):
qjh.kai_qiang(lqh)
lqh.kai_qiang(qjh)
print(qjh)
print(lqh)
print('\nlqh再安装几颗子弹')
lqh.install_bullet(20)
print(qjh)
print(lqh)
print('\n来啊,继续互相伤害啊!!!')
for i in range(20):
qjh.kai_qiang(lqh)
lqh.kai_qiang(qjh)
print(qjh)
print(lqh)
网友评论