Python 简单的枪击游戏

1 1 class Person(object): 2 2 """人的类""" 3 3 def __init__(self,name): 4 4 super(Person,self).__init__() 5 5 self.name = name 6 6 self.gun = None # 用来保存枪对象的引用 7 7 self.hp = 100 # 血量 8 8 9 9 def anzhuang_zidan(self,dan_jia_temp,zi_dan_temp): 10 10 """把子弹装到弹夹中""" 11 11 dan_jia_temp.bao_cun_zidan(zi_dan_temp) 12 12 13 13 def anzhuang_danjia(self,gun_temp,dan_jia_temp): 14 14 """把弹夹安装到枪中""" 15 15 gun_temp.bao_cun_danjia(dan_jia_temp) 16 16 17 17 def naqiang(self,gun_temp): 18 18 """拿起一把枪""" 19 19 self.gun = gun_temp 20 20 21 21 def __str__(self): 22 22 if self.gun: 23 23 return "%s的血量为:%d,他有枪:%s"%(self.name,self.hp,self.gun) 24 24 else: 25 25 if self.hp>0: 26 26 return "%s的血量为:%d,他没有枪"%(self.name,self.hp) 27 27 else: 28 28 return "%s 已挂!"%self.name 29 29 30 30 def kou_ban_ji(self,diren): 31 31 """让枪发射子弹去打敌人""" 32 32 self.gun.fire(diren) 33 33 34 34 def diao_xue(self,sha_shang_li): 35 35 """根据杀伤力,掉相应血量""" 36 36 self.hp -= sha_shang_li 37 37 38 38 39 39 40 40 41 41 42 42 43 43 class Gun(object): 44 44 """枪的类""" 45 45 def __init__(self,name): 46 46 super(Gun,self).__init__() 47 47 self.name = name # 用来记录枪的类型 48 48 self.danjia = None # 用来记录弹夹对象的引用 49 49 50 50 51 51 def bao_cun_danjia(self,dan_jia_temp): 52 52 """用一个属性保存弹夹的引用""" 53 53 self.danjia = dan_jia_temp 54 54 55 55 def __str__(self): 56 56 if self.danjia: 57 57 return "枪的信息为:%s, 弹夹信息:%s"%(self.name, self.danjia) 58 58 else: 59 59 return "枪的信息为:%s,这把枪中没有弹夹"%(self.name) 60 60 61 61 def fire(self,diren): 62 62 """枪中弹夹中获取一发子弹,然后让这发子弹去击中敌人""" 63 63 #先取弹夹中取子弹 64 64 zidan_temp = self.danjia.tanchu_zidan() 65 65 #让这个子弹去伤害敌人 66 66 if zidan_temp: 67 67 #子弹.打中敌人(敌人) 68 68 zidan_temp.dazhong(diren) 69 69 else: 70 70 print("弹夹中没有子弹啦!") 71 71 72 72 73 73 class Danjia(object): 74 74 """枪的类""" 75 75 def __init__(self,max_num): 76 76 super(Danjia,self).__init__() 77 77 self.max_num = max_num # 用来记录枪夹得容量 78 78 self.zidan_list = [] # 用来记录所有子弹的引用 79 79 80 80 def bao_cun_zidan(self,zi_dan_temp): 81 81 """将这个子弹保存在弹夹""" 82 82 self.zidan_list.append(zi_dan_temp) 83 83 84 84 def __str__(self): 85 85 return "弹夹的信息为:%d/%d"%(len(self.zidan_list),self.max_num) 86 86 87 87 def tanchu_zidan(self): 88 88 """弹出最上面的那颗子弹""" 89 89 if self.zidan_list: 90 90 return self.zidan_list.pop() 91 91 else: 92 92 return None 93 93 94 94 95 95 class Zi_dan(object): 96 96 """枪的类""" 97 97 def __init__(self,sha_shang_li): 98 98 super(Zi_dan,self).__init__() 99 99 self.sha_shang_li = sha_shang_li # sha_shang_li子弹威力 100100 101101 def dazhong(self,diren): 102102 """让敌人掉血""" 103103 #敌人.掉血(一个子弹的威力) 104104 diren.diao_xue(self.sha_shang_li) 105105 106106 107107 108108 def main(): 109109 """用来控制这个程序流程""" 110110 111111 # 1创建一个老赵对象 112112 laozhao = Person("老赵") 113113 114114 115115 # 2创建一个枪对象 116116 ak47 = Gun("AK47") 117117 118118 # 3创建一个弹夹对象 119119 dan_jia = Danjia(20) 120120 121121 # 4创建一些子弹 122122 for i in range(15): 123123 zi_dan = Zi_dan(10) 124124 125125 # 5老赵把子弹安装在弹夹中 126126 # laozhao安装子弹到弹夹中(弹夹,子弹) 127127 laozhao.anzhuang_zidan(dan_jia,zi_dan) 128128 129129 130130 # 6老赵把弹夹安装到抢中 131131 # 老赵.安装弹夹到枪中 132132 laozhao.anzhuang_danjia(ak47, dan_jia) 133133 134134 """ 135135 # test:测试弹夹信息 136136 print(dan_jia) 137137 # test:枪测试 138138 print(ak47) 139139 """ 140140 141141 # 7老赵拿枪 142142 laozhao.naqiang(ak47) 143143 144144 # 测试老王拿枪 145145 print(laozhao) 146146 147147 148148 # 8创建一个敌人 149149 gebi_laosong = Person("隔壁老宋") 150150 print(gebi_laosong) 151151 152152 # 9老赵开枪打敌人 153153 # 老王.扣扳机(隔壁老宋) 154154 laozhao.kou_ban_ji(gebi_laosong) 155155 print(gebi_laosong) 156156 print(laozhao) 157157 158158 #老赵向老宋连续开15159159 for i in range(15): 160160 laozhao.kou_ban_ji(gebi_laosong) 161161 print(gebi_laosong) 162162 print(laozhao) 163163 164164 165165 166166 if __name__ == '__main__': 167167 main()
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )