关于py3面向对象的小Demo,欢迎 交流。

class Person(object):#声明人类
def __init__(self,name):
self.name = name
self.gun = None#是否拿枪
self.hp = 100#人的血量
def __str__(self):
if self.gun:
return "%s拿的枪是%s,血量为:%s"%(self.name,self.gun,self.hp)
else:
return "%s没有拿枪,血量为%s"%(self.name,self.hp)
#定义方法实现人安装子弹到弹夹
def installBullet(self,cartridgeClip,bullet):
#安装子弹到当前弹夹
cartridgeClip.pushBullet(bullet)#找cartridgeClip类中的pushBullet方法保存子弹
#老李安装中弹夹到枪
def installToGun(self,name,cartridgeClip):
name.installtogun(cartridgeClip)
#拿枪
def getgun(self,name):
self.gun = name
#开枪打敌人(老宋)
def kill(self,name):
self.gun.fire(name)
#掉血
def diaoxue(self,lethality):
if self.hp >0:
self.hp -= lethality
else:
print("%s已经挂了"%self.name) class Gun(object):#声明枪类
def __init__(self,name):
self.name = name#记录弹夹的类型
self.cartridgeClip = None#记录弹夹对象的引用
def __str__(self):
if self.cartridgeClip:
return "枪名是:%s, 弹夹信息为:%s"%(self.name,self.cartridgeClip)
else:
return "枪名是:%s,没有弹夹"%(self.name)
def installtogun(self,cartridgeClip):
self.cartridgeClip = cartridgeClip
#开火射击
def fire(self,name):
#先取子弹
temp = self.cartridgeClip.outBullet()
#让子弹去伤害敌人
if temp:
temp.ko(name)
else:
print("没有子弹了。。。")
class CartridgeClip(object):#声明弹夹类
def __init__(self,maxNum):
self.maxnum = maxNum#记录最大容量
# 声明列表buttlelist用来存放子弹
self.buttlelist = []
def __str__(self):
return "弹夹的信息为:%s/%s"%(len(self.buttlelist),self.maxnum)
def pushBullet(self,bullet):
self.buttlelist.append(bullet)
def outBullet(self):#弹出子弹
if self.buttlelist:
return self.buttlelist.pop()
else:
return None
class Bullet(object):#声明子弹类
def __init__(self,Lethality):
self.lethality = Lethality#子弹的杀伤力
def ko(self,name):#打中敌人,敌人掉血
name.diaoxue(self.lethality)
def main():
#分别声明对象
laoli = Person("老李")#拿枪的人叫老李
k98 = Gun("98k")#该枪的名称为98k
cartridgeClip = CartridgeClip(30)#弹夹的最大容量是30
bullet = Bullet(10)#子弹的杀伤力是10
#创建一些子弹
for i in range(10):
bullet = Bullet(10)
laoli.installBullet(cartridgeClip, bullet)
#老李拿着弹夹吧子弹放入弹夹,在安装弹夹到枪中 老李.安装子弹到弹夹(person类中的方法)
laoli.installBullet(cartridgeClip,bullet)
#laoli把弹夹安装到枪里
laoli.installToGun(k98,cartridgeClip)
# print("66")
print(cartridgeClip)
#测试枪的信息
print(k98)
#老李拿枪\
laoli.getgun(k98)
print(laoli)
#创建敌人老宋
laosong = Person("对面老宋")
print(laosong)
#开枪打老宋
laoli.kill(laosong)
print(laosong)
laoli.kill(laosong)
print(laosong)
laoli.kill(laosong)
print(laosong)
laoli.kill(laosong)
print(laosong)
for i in range(20):
laoli.kill(laosong)
print(laosong) #print("66") if __name__ == '__main__':
main()

运行效果如下:

最新文章

  1. unrar.dll 使用实例
  2. 如何定位web前后台的BUG
  3. [MSSQL]SQL疑难杂症实战记录-巧妙利用PARTITION分组排名递增特性解决合并连续相同数据行
  4. 写在SDOI2016Round1前的To Do List
  5. VennDiagram 画文氏图/维恩图/Venn
  6. IE兼容性问题列表及解决办法
  7. WCF 宿主与通信模式(二)
  8. Cocos2d-x课程大纲/学习路线
  9. R学习日记——分解时间序列(季节性数据)
  10. JQUERY1.9学习笔记 之基本过滤器(三)偶数选择器
  11. ubuntu 创建 PyCharm 桌面快捷方式 (或者叫 启动器 )
  12. js流程语句
  13. 《java核心技术36讲》学习笔记-------杨晓峰(极客时间)
  14. Zookeeper运维问题集锦
  15. (后端)解决code唯一码(java)简便方法
  16. #6284. 数列分块入门 8(区间询问等于一个数 cc 的元素,并将这个区间的所有元素改为 c)
  17. Docker的离线安装
  18. 【转】浅谈分布式服务协调技术 Zookeeper
  19. Alpha冲刺-第一天
  20. Phpcms V9手机门户设置教程:怎么用PC V9做手机网站

热门文章

  1. MindSpore自定义模型损失函数
  2. 【题解】逐个击破 luogu2700
  3. bzoj1925 地精部落
  4. 安装ogg软件报错:[INS-75012]Sofware Location specified is already an existing Oracle
  5. 仅使用JsonUtility && File类实现Json数据读写
  6. 4.QT:spinbox(spindoublebox)控件的信号响应
  7. 【转】JAVA四种引用(强引用,弱引用,软引用,虚引用)
  8. 以对话的形式管理你的Kubernetes集群
  9. namenode和datanode启动失败
  10. linux学习之路第三天(vim和vi使用)