Python 简单的枪击游戏

Stella981
• 阅读 638
  1 class Person(object):
  2     """人的类"""
  3     def __init__(self,name):
  4         super(Person,self).__init__()
  5         self.name = name
  6         self.gun = None     # 用来保存枪对象的引用
  7         self.hp = 100       # 血量
  8 
  9     def anzhuang_zidan(self,dan_jia_temp,zi_dan_temp):
 10         """把子弹装到弹夹中"""
 11         dan_jia_temp.bao_cun_zidan(zi_dan_temp)
 12 
 13     def anzhuang_danjia(self,gun_temp,dan_jia_temp):
 14         """把弹夹安装到枪中"""
 15         gun_temp.bao_cun_danjia(dan_jia_temp)
 16 
 17     def naqiang(self,gun_temp):
 18         """拿起一把枪"""
 19         self.gun = gun_temp
 20 
 21     def __str__(self):
 22         if self.gun:
 23             return "%s的血量为:%d,他有枪:%s"%(self.name,self.hp,self.gun)
 24         else:
 25             if self.hp>0:
 26                 return "%s的血量为:%d,他没有枪"%(self.name,self.hp)
 27             else:
 28                 return "%s 已挂!"%self.name
 29 
 30     def kou_ban_ji(self,diren):
 31         """让枪发射子弹去打敌人"""
 32         self.gun.fire(diren)
 33 
 34     def diao_xue(self,sha_shang_li):
 35         """根据杀伤力,掉相应血量"""
 36         self.hp -= sha_shang_li
 37 
 38 
 39 
 40 
 41 
 42 
 43 class Gun(object):
 44     """枪的类"""
 45     def __init__(self,name):
 46         super(Gun,self).__init__()
 47         self.name = name    # 用来记录枪的类型
 48         self.danjia = None      # 用来记录弹夹对象的引用
 49 
 50 
 51     def  bao_cun_danjia(self,dan_jia_temp):
 52         """用一个属性保存弹夹的引用"""
 53         self.danjia = dan_jia_temp
 54 
 55     def __str__(self):
 56         if self.danjia:
 57             return "枪的信息为:%s, 弹夹信息:%s"%(self.name, self.danjia)
 58         else:
 59             return "枪的信息为:%s,这把枪中没有弹夹"%(self.name)
 60 
 61     def fire(self,diren):
 62         """枪中弹夹中获取一发子弹,然后让这发子弹去击中敌人"""
 63         #先取弹夹中取子弹
 64         zidan_temp = self.danjia.tanchu_zidan()
 65         #让这个子弹去伤害敌人
 66         if zidan_temp:
 67             #子弹.打中敌人(敌人)
 68             zidan_temp.dazhong(diren)
 69         else:
 70             print("弹夹中没有子弹啦!")
 71 
 72 
 73 class Danjia(object):
 74     """枪的类"""
 75     def __init__(self,max_num):
 76         super(Danjia,self).__init__()
 77         self.max_num = max_num    # 用来记录枪夹得容量
 78         self.zidan_list = []    # 用来记录所有子弹的引用
 79 
 80     def bao_cun_zidan(self,zi_dan_temp):
 81         """将这个子弹保存在弹夹"""
 82         self.zidan_list.append(zi_dan_temp)
 83 
 84     def __str__(self):
 85         return "弹夹的信息为:%d/%d"%(len(self.zidan_list),self.max_num)
 86 
 87     def tanchu_zidan(self):
 88         """弹出最上面的那颗子弹"""
 89         if self.zidan_list:
 90             return self.zidan_list.pop()
 91         else:
 92             return None
 93 
 94 
 95 class Zi_dan(object):
 96     """枪的类"""
 97     def __init__(self,sha_shang_li):
 98         super(Zi_dan,self).__init__()
 99         self.sha_shang_li = sha_shang_li    # sha_shang_li子弹威力
100 
101     def dazhong(self,diren):
102         """让敌人掉血"""
103         #敌人.掉血(一个子弹的威力)
104         diren.diao_xue(self.sha_shang_li)
105 
106 
107 
108 def main():
109     """用来控制这个程序流程"""
110 
111     # 1创建一个老赵对象
112     laozhao = Person("老赵")
113 
114 
115     # 2创建一个枪对象
116     ak47 = Gun("AK47")
117 
118     # 3创建一个弹夹对象
119     dan_jia = Danjia(20)
120 
121     # 4创建一些子弹
122     for i in range(15):
123         zi_dan = Zi_dan(10)
124 
125         # 5老赵把子弹安装在弹夹中
126         # laozhao安装子弹到弹夹中(弹夹,子弹)
127         laozhao.anzhuang_zidan(dan_jia,zi_dan)
128 
129 
130     # 6老赵把弹夹安装到抢中
131     # 老赵.安装弹夹到枪中
132     laozhao.anzhuang_danjia(ak47, dan_jia)
133 
134     """
135     # test:测试弹夹信息
136     print(dan_jia)
137     # test:枪测试
138     print(ak47)
139     """
140 
141     # 7老赵拿枪
142     laozhao.naqiang(ak47)
143 
144     # 测试老王拿枪
145     print(laozhao)
146 
147 
148     # 8创建一个敌人
149     gebi_laosong = Person("隔壁老宋")
150     print(gebi_laosong)
151 
152     # 9老赵开枪打敌人
153     # 老王.扣扳机(隔壁老宋)
154     laozhao.kou_ban_ji(gebi_laosong)
155     print(gebi_laosong)
156     print(laozhao)
157 
158     #老赵向老宋连续开15枪
159     for i in range(15):
160         laozhao.kou_ban_ji(gebi_laosong)
161         print(gebi_laosong)
162         print(laozhao)
163 
164 
165 
166 if __name__ == '__main__':
167     main()
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
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
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这