码迷,mamicode.com
首页 > 编程语言 > 详细

python-老王开枪

时间:2018-05-07 11:02:03      阅读:326      评论:0      收藏:0      [点我收藏+]

标签:def   imp   max   __str__   shang   obj   zid   str   author   

  1 __author__ = "Stephen Yuan"
  2 import time
  3 
  4 class Person(object):
  5     """人的类"""
  6     def __init__(self, name):
  7         super(Person, self).__init__()
  8         self.name = name  # 记录人的名字
  9         self.gun = None  # 默认人是没有枪的
 10         self.hp = 100  # 默认人的血量100
 11 
 12     def anzhuang_zidan(self, dan_jia_temp, zi_dan_temp):
 13         """把子弹安装到弹夹内"""
 14         dan_jia_temp.baocun_zidan(zi_dan_temp)
 15 
 16     def anzhuang_danjia(self, ak47, dan_jia):
 17         """把弹夹安装到枪内"""
 18         ak47.baocun_danjia(dan_jia)
 19 
 20     def na_qiang(self, gun_temp):
 21         """拿起一把枪"""
 22         self.gun = gun_temp
 23 
 24     def __str__(self):
 25         if self.gun:
 26             return "%s的血量:%d,%s, 他开枪了,嘣!" %(self.name, self.hp, self.gun)
 27         else:
 28             if self.hp == 100:
 29                 return "%s的血量,%d, 他没有枪" % (self.name, self.hp)
 30             elif self.hp > 0:
 31                 return "%s的血量,%d,他没有枪,他正在受到炮火的袭击,小心!他中了一枪..." % (self.name, self.hp)
 32             else:
 33                 return "%s已经死亡..." % self.name
 34 
 35     def kai_qiang(self, diren, zi_dan_temp, dan_jia_temp):
 36         """打敌人"""
 37         diren.hp -= zi_dan_temp.sha_shang_li  # 减血
 38         dan_jia_temp.zidan_list.pop()  # 减子弹
 39 
 40 class Gun(object):
 41     """枪类"""
 42     def __init__(self, name):
 43         super(Gun, self).__init__()
 44         self.name = name  # 记录枪的类型
 45         self.danjia = None  # 默认枪中是没有弹夹的
 46 
 47     def baocun_danjia(self, dan_jia_temp):
 48         """枪保存弹夹"""
 49         self.danjia = dan_jia_temp
 50 
 51     def __str__(self):
 52         if self.danjia:
 53             return "枪的信息:%s, %s" % (self.name, self.danjia)
 54         else:
 55             return "枪的信息:%s,这把枪没有弹夹" % self.name
 56 
 57 class DanJia(object):
 58     """弹夹类"""
 59     def __init__(self, max_num):
 60         super(DanJia, self).__init__()
 61         self.max_num =max_num  # 弹夹的最大容量
 62         self.zidan_list = []  # 用列表保存子弹的数量
 63 
 64     def baocun_zidan(self, zi_dan_temp):
 65         """弹夹保存子弹"""
 66         self.zidan_list.append(zi_dan_temp)
 67 
 68     def __str__(self):
 69         return "弹夹的信息:%d/%d" % (len(self.zidan_list), self.max_num)
 70 
 71 class ZiDan(object):
 72     """子弹类"""
 73     def __init__(self, sha_shang_li):
 74         super(ZiDan, self).__init__()
 75         self.sha_shang_li = sha_shang_li  # 子弹的杀伤力
 76 
 77 def main():
 78     """用来控制整个程序的流程"""
 79     # 创建老王
 80     lao_wang = Person(老王)
 81 
 82     # 创建枪
 83     ak47 = Gun("AK47")
 84 
 85     # 创建弹夹
 86     dan_jia = DanJia(30)
 87 
 88     # 创建子弹
 89     zi_dan = ZiDan(10)
 90 
 91     for i in range(25):
 92         # 老王把子弹安装到弹夹内
 93         lao_wang.anzhuang_zidan(dan_jia, zi_dan)
 94 
 95     # 老王把弹夹安装到枪中
 96     lao_wang.anzhuang_danjia(ak47, dan_jia)
 97 
 98     # 测试弹夹的信息
 99     # print(dan_jia)
100 
101     # 测试枪的信息
102     # print(ak47)
103 
104     # 老王拿枪
105     lao_wang.na_qiang(ak47)
106 
107     # 测试老王对象
108     # print(lao_wang)
109 
110     # 创建一个敌人
111     gebi_laowang = Person("隔壁老王")
112 
113     for i in range(10):
114     # 老王拿枪打隔壁老宋
115         lao_wang.kai_qiang(gebi_laowang, zi_dan, dan_jia)
116         print(lao_wang)
117         print(gebi_laowang)
118         time.sleep(2)
119         print("")
120 
121 if __name__ == __main__:
122     main()

 

执行结果:

老王的血量:100,枪的信息:AK47, 弹夹的信息:24/30, 他开枪了,嘣!
隔壁老王的血量,90,他没有枪,他正在受到炮火的袭击,小心!他中了一枪...

老王的血量:100,枪的信息:AK47, 弹夹的信息:23/30, 他开枪了,嘣!
隔壁老王的血量,80,他没有枪,他正在受到炮火的袭击,小心!他中了一枪...

老王的血量:100,枪的信息:AK47, 弹夹的信息:22/30, 他开枪了,嘣!
隔壁老王的血量,70,他没有枪,他正在受到炮火的袭击,小心!他中了一枪...

老王的血量:100,枪的信息:AK47, 弹夹的信息:21/30, 他开枪了,嘣!
隔壁老王的血量,60,他没有枪,他正在受到炮火的袭击,小心!他中了一枪...

老王的血量:100,枪的信息:AK47, 弹夹的信息:20/30, 他开枪了,嘣!
隔壁老王的血量,50,他没有枪,他正在受到炮火的袭击,小心!他中了一枪...

老王的血量:100,枪的信息:AK47, 弹夹的信息:19/30, 他开枪了,嘣!
隔壁老王的血量,40,他没有枪,他正在受到炮火的袭击,小心!他中了一枪...

老王的血量:100,枪的信息:AK47, 弹夹的信息:18/30, 他开枪了,嘣!
隔壁老王的血量,30,他没有枪,他正在受到炮火的袭击,小心!他中了一枪...

老王的血量:100,枪的信息:AK47, 弹夹的信息:17/30, 他开枪了,嘣!
隔壁老王的血量,20,他没有枪,他正在受到炮火的袭击,小心!他中了一枪...

老王的血量:100,枪的信息:AK47, 弹夹的信息:16/30, 他开枪了,嘣!
隔壁老王的血量,10,他没有枪,他正在受到炮火的袭击,小心!他中了一枪...

老王的血量:100,枪的信息:AK47, 弹夹的信息:15/30, 他开枪了,嘣!
隔壁老王已经死亡...

 

python-老王开枪

标签:def   imp   max   __str__   shang   obj   zid   str   author   

原文地址:https://www.cnblogs.com/mrstephen/p/9001337.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!