一.简介
通过函数进行操作,实际可以扩展为图形操作的
二.代码
#!/usr/bin/python3
#人类模板
class
People():
-
def __init__(self, name, age, bullet):
self.name = name
self.age = age
self.gnu =
None
#枪械为空
self.bullet = bullet #发放多少子弹
-
def display_info(self):
-
print("动作--查看信息")
-
print("姓名:"
self.name)
-
print("年龄:"
str(self.age))
-
if self.gnu:
#判断一下是否持有枪械
-
print("枪械:"
self.gnu.name)
-
else:
-
print("枪械:无")
-
print("剩余子弹:"
str(self.bullet))
-
print("")
-
def take_gnu(self, gnu_name):
#拿枪
-
print("动作--拿枪")
-
if self.gnu:
-
print("手里已经有"
self.gnu.name)
-
else:
self.gnu =
Gnu(gnu_name)
#这里没枪械,则将枪的对象,赋值给gnu这个变量
-
print("获得一把"
self.gnu.name)
-
print("")
-
def zhuang(self):
#装弹
-
print("动作--装弹")
hao = self.gnu.inst_bullet(self.bullet)
#把当前子弹数告诉他
-
if hao ==
3:
-
print("子弹已经是满的,无需装载")
-
elif hao ==
9:
-
print("剩余子弹数不够装满")
-
else:
self.bullet = self.bullet - hao #这里则返回消耗的子弹数,用于扣除当前子弹数
-
print("已经装载子弹:"
str(hao))
-
print("")
-
def fashe(self):
#发射
-
print("动作--发射子弹")
self.gnu.emission_bullet()
#装子弹,打枪
class
Gnu():
-
def __init__(self, name):
self.name = name
self.bullet =
0
-
def inst_bullet(self, last_bullet):
#装弹
-
if self.bullet ==
20:
#如果满弹夹,则无法装弹,返回3,在人的类那里判断
-
return
3
-
else:
linshi_bullet =
20
- self.bullet
-
if last_bullet > linshi_bullet:
#剩余子弹是否小于该补充的子弹
self.bullet =
20
-
return linshi_bullet
-
else:
-
return
9
-
def emission_bullet(self):
#发射
-
if self.bullet >
0:
self.bullet = self.bullet -
1
-
print("发射了一颗子弹")
-
else:
-
print("没有子弹了")
-
print("")
#初始化和查看信息
ren =
People("张三",
15,
200)
ren.display_info()
#拿枪
ren.take_gnu("ak47")
#发射子弹和装弹,主要是测试没有子弹是否可以发射
ren.fashe()
ren.zhuang()
#发射2发
ren.fashe()
ren.fashe()
#装弹2次,测试是否可以重复装弹
ren.zhuang()
ren.zhuang()
#显示信息
ren.display_info()