Python 簡單的槍擊遊戲

 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()
相關文章
相關標籤/搜索