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()

转载于:https://www.cnblogs.com/Hunter-541695/p/9363846.html

Python 简单的枪击游戏相关推荐

  1. Python简单龟兔赛跑小游戏

    Python实现简单的龟兔赛跑小游戏 基于CSS 和 js的基础之上实现: 具体代码如下>>: HTML代码文件 <!DOCTYPE html> <html>< ...

  2. python简单超级马里奥游戏下载_python 实现超级玛丽游戏

    开发需求 python 3.7+ pygame 1.9+ 演示 项目地址 https://github.com/Mr-han11/PythonSuperMario-master 主要功能的代码实现 玩 ...

  3. python简单超级马里奥游戏下载大全_Python实现超级玛丽游戏系列教程01玛丽登场...

    配套视频教程 www.bilibili.com/video/BV1ua411c7m3 项目代码 gitee.com/kamiba/python_super_mario_game_code 最终效果 搭 ...

  4. python简单超级马里奥游戏下载大全_Python实现超级玛丽游戏系列教程02玛丽走跑...

    配套视频教程 项目代码 最终效果 行走 constants.py STAND = 'standing' WALK = 'walk' SMALL_ACCEL = .2 SMALL_TURNAROUND ...

  5. python外星人入侵游戏图片_[Python]简单的外星人入侵游戏

    1 importsys2 3 importpygame4 from bullet importBullet5 from alien importAlien6 from time importsleep ...

  6. python猜数游戏流程_python简单猜数游戏实例

    本文实例讲述了python简单猜数游戏.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python import random number = random.randint ...

  7. python编写猜数游戏代码、如果不是整数、显示输入错误_数字炸弹游戏程序 用python来实现...

    相信许多小伙伴都玩过数字炸弹游戏,就是指在一定数字范围(一般是整数,不包含边界)里,一个玩家选中一个数字当作炸弹,其余玩家在这个范围含数字,每次只要没猜中炸弹数字,则根据玩家猜的数字缩小范围,直至其中 ...

  8. python编写猜数游戏代码、如果不是整数、显示输入错误_python编写猜数游戏代码、如果不是整数、显示输入错误_数字炸弹游戏程序 用python来实现......

    相信许多小伙伴都玩过数字炸弹游戏,就是指在一定数字范围(一般是整数,不包含边界)里,一个玩家选中一个数字当作炸弹,其余玩家在这个范围含数字,每次只要没猜中炸弹数字,则根据玩家猜的数字缩小范围,直至其中 ...

  9. python编写赛车游戏单机版_使用Python中OrderedDict模拟一个简单的竞速游戏排名

    上一篇,我们梳理了Python中关于字典排序的一些常用方法(杂乱无章的数据结构如何进行排序,简明讲述Python字典排序那些事).其中,我们讲到了Python的collections模块中的Order ...

最新文章

  1. Python(四)IP代理
  2. Linux多线程总结
  3. 寒假每日一题(提高组)【Week 1 完结】
  4. php 上传 tmp_name 空,PHP文件上载错误tmp_name为空
  5. STM32技术文档里面的I / O Level FT具体含义
  6. inputstream读取html乱码,java InputStream 读取汉语言内容的解决乱码
  7. 小程序 | 基于WAMP的新闻网小程序开发(体验全栈式开发微信小程序)
  8. Python+pandas你可能不知道的排序技巧
  9. (一)如何实现一个单进程阻塞的网络服务器
  10. 31.URL 管理(2)
  11. redis作用_Java高级架构笔记——实现故障恢复自动化:详解Redis哨兵技术
  12. ARM体系结构与编程笔记
  13. 利用Fiddler下载旧版本 iOS App
  14. Excel怎么快速为非数字单元格填充颜色
  15. 电脑可以使用QQ,但是无法上网的解决方案
  16. 苹果开发者后台,修改付费app中银行账户信息时注意
  17. NCRE考试感想 四级嵌入式(上)
  18. 「视频」重磅 | Magic Leap再发Demo,凯文·凯利万字长文揭秘
  19. win10关闭自动更新(针对已经关闭windows update项,但系统仍自动更新的问题)
  20. Vmware安装迷你版的 Centos6 并配置 Nat 模式可访问外网

热门文章

  1. 写在Nokia和微软结盟之后
  2. 如何实现局域网架设BT服务器
  3. 判断请求时手机端访问还是电脑端访问
  4. 【图学院】区块链与密码学全民课堂第1-6讲:分叉大战
  5. 【小家java】java8新特性之---Optional的使用,避免空指针,代替三目运算符
  6. oracle函数instr函数
  7. flask 不同应用间 session 共享,统一认证
  8. 前端开发工作提炼亮点
  9. Modprobe加载驱动问题
  10. list的分批处理实现的几种方式