標籤: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-老王開槍