python學習 物件導向 老王開槍

2021-09-16 14:00:09 字數 3509 閱讀 3411

class person(object):

"""人的類"""

def __init__(self, name):

super(person, self).__init__()

self.name = name

self.gun = none

self.hp = 100 #定義乙個血量

def anzhuang_zidan(self, dan_jia_temp, zi_dan_temp):

"""把子彈裝到彈夾中"""

# 彈夾.儲存子彈(子彈)

dan_jia_temp.baocun_zidan(zi_dan_temp)

def anzhuang_danjia(self, gun_temp, dan_jia_temp):

"""把彈夾安裝到槍中"""

# 槍.儲存彈夾(彈夾)

gun_temp.baocun_danjia(dan_jia_temp)

def naqiang(self, gun_temp):

"""拿起一把槍"""

self.gun = gun_temp

def kou_ban_ji(self,diren):

"""讓子彈發射擊中敵人"""

#槍.**(敵人)

self.gun.fire(diren)

def __str__(self):

if self.gun:

return "%s的血量為:%d,他有槍,搶的資訊為:%s"%(self.name,self.hp,self.gun)

else:

if self.hp>0:

return "%s的血量為:%d,他沒槍%s"%(self.name,self.hp,self.gun)

else:

return "%s已掛"%(self.name)

def diaoxue(self,sha_shang_li):

"""根據子彈威力,敵人掉一顆子彈的威力"""

self.hp -= sha_shang_li

class gun(object):

"""槍類"""

def __init__(self, name):

super(gun, self).__init__()

self.name = name # 用來記錄槍的型別

self.danjia = none # 用來記錄彈夾物件的引用

def baocun_danjia(self, dan_jia_temp):

"""用乙個屬性來儲存這個彈夾物件的引用"""

self.danjia = dan_jia_temp

def __str__(self):

if self.danjia:

return "槍的資訊為:%s, %s" % (self.name, self.danjia)

else:

return "槍的資訊為:%s,這把槍中沒有彈夾" % (self.name)

def fire(self,diren):

"""槍從子彈中獲取一次子彈,子彈去擊中敵人"""

#彈夾.彈出子彈()

zi_dan_temp = self.danjia.tanchu_zidan()

#子彈.擊中(敵人)

if zi_dan_temp:

zi_dan_temp.jizhong(diren)

else:

return "沒有子彈了....."

class danjia(object):

"""彈夾類"""

def __init__(self, max_num):

super(danjia, self).__init__()

self.max_num = max_num # 用來記錄彈夾的最大容量

self.zidan_list = # 用來記錄所有的子彈的引用

def baocun_zidan(self, zi_dan_temp):

"""將這顆子彈儲存"""

#print(self.zidan_list)

def tanchu_zidan(self):

"""彈夾彈出最上面的子彈,獲取子彈"""

if self.zidan_list:

return self.zidan_list.pop()

else:

return none

def __str__(self):

return "彈夾的資訊為:%d/%d" % (len(self.zidan_list), self.max_num)

class zidan(object):

"""子彈類"""

def __init__(self, sha_shang_li):

super(zidan, self).__init__()

self.sha_shang_li = sha_shang_li # 這顆子彈的威力

def jizhong(self,diren):

"""讓敵人掉血"""

#敵人.掉血(一顆子彈的威力)

diren.diaoxue(self.sha_shang_li)

def main():

"""用來控制整個程式的流程"""

# 1. 建立老王物件

laowang = person("老王")

# 2. 建立乙個槍物件

ak47 = gun("ak47")

# 3. 建立乙個彈夾物件

dan_jia = danjia(20)

# 4. 建立一些子彈

for i in range(11):

zi_dan = zidan(10)

# 5. 老王把子彈安裝到彈夾中

# 老王.安裝子彈到彈夾中(彈夾,子彈)

laowang.anzhuang_zidan(dan_jia, zi_dan)

# 6. 老王把彈夾安裝到槍中

# 老王.安裝彈夾到槍中(槍,彈夾)

laowang.anzhuang_danjia(ak47, dan_jia)

# test:測試彈夾的資訊

print(dan_jia)

# test:測試槍的資訊

print(ak47)

# 7. 老王拿槍

laowang.naqiang(ak47)

# test:老王拿槍

print(laowang)

# 8. 建立乙個敵人

laosong = person("老宋")

#laosong.naqiang("")

print(laosong)

# 9. 老王開槍打敵人

#老王.扣扳機(敵人)

laowang.kou_ban_ji(laosong)

print(laosong)

print(laowang)

print(laosong)

if __name__ == '__main__':

main()

Python 之 老王開槍 練習

知識點 這篇部落格是對前面python基礎的乙個複習,更應該學到的是如何設計一系列的動作,或者說是設計程式 1.分析有哪些類,並且建立 人 槍 彈夾 子彈 2.物件的建立 3.各個類的屬性設定 4.類的方法設計,由里向外 1 人拿槍 eg 1彈夾裝子彈 2 槍裝彈夾 3.人拿槍 2 人開槍 eg.1...

Python案例練習 老王開槍

import time class person object 人的類 def init self,name super person,self init self.name name 記錄人的名字 self.gun none 預設人是沒有槍的 self.hp 100 預設人的血量100 defan...

Python案例練習 老王開槍

import time class person object 人的類 def init self,name super person,self init self.name name 記錄人的名字 self.gun none 預設人是沒有槍的 self.hp 100 預設人的血量100 defan...