射擊遊戲 Python物件導向

2021-08-19 16:17:58 字數 3142 閱讀 9303

class person:

"""人的類"""

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 __str__(self):

if self.gun:

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

else:

if self.hp>0:

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

else:

return "%s已掛"%self.name

def kou_ban_ji(self,diren):

"""讓槍發射子彈去打敵人"""

self.gun.fire(diren)

def xiao_xue(self,sha_shang_li):

"""生命值預設100"""

self.hp-=sha_shang_li

class gun:

"""槍類"""

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

"""槍從彈夾中獲取一發子彈,然後讓這發子彈去擊中敵人"""

#先從彈夾中取子彈

#彈夾.彈出一發子彈()

zidan_temp=self.danjia.tanchu_zidan()

if zidan_temp:

zidan_temp.dazhong(diren)

else:

print("彈夾中沒有子彈了。。。。")

class danjia:

"""彈夾類"""

def __init__(self,max_num):

super(danjia,self).__init__()

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

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

def baocun_zidan(self,zi_dan_temp):

""""""

def __str__(self):

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

def tanchu_zidan(self):

"""彈出最上面的那顆子彈"""

if self.zidan_list:

return self.zidan_list.pop()

else:

none

class zidan:

"""子彈類"""

def __init__(self,sha_shang_li):

super(zidan,self).__init__()

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

def dazhong(self,diren):

diren.xiao_xue(self.sha_shang_li)

def main():

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

#1.建立老王物件

laowang=person("王寶強")

#2.建立乙個槍物件

ak47=gun("ak47")

#3.建立彈夾物件

dan_jia=danjia(20)

#4.建立一些子彈

for i in range(15):

zi_dan=zidan(10)

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

laowang.anzhuang_zidan(dan_jia,zi_dan)

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

laowang.anzhuang_danjia(ak47,dan_jia)

#7.老王拿槍

laowang.naqiang(ak47)

#print(laowang)

#8.建立敵人

gebi_laosong=person("宋吉吉")

print(gebi_laosong)

#9.老王開槍打敵人

laowang.kou_ban_ji(gebi_laosong)

for i in range(10):

laowang.kou_ban_ji(gebi_laosong)

print(gebi_laosong)

print(laowang)

if __name__=='__main__':

main()

執行效果:

物件導向(基礎題目 射擊)

package com.svse.seven2 1 編寫乙個槍類,有乙個成員變數用於儲存彈夾中的子彈,有乙個成員方法用於發射,每呼叫一次發射功能,彈夾中的子彈數減少1。2 修改上體,增強發射功能。呼叫發射功能時首先判斷彈夾中還有子彈麼,如果有,在螢幕上顯示 呯!並將彈夾中的子彈量減少1 如果沒子彈量...

Shoot射擊遊戲

shoot射擊遊戲專案二 1.需求分析 a 設計乙個父類 超類 並且讓6個物件繼承超類,測試 b 給超類新增構造方法 讓6個物件分別呼叫超類 c 設定物件陣列,進行測試 d 在6個子類 派生類中重寫 e 畫窗體 2.技術分析 重寫和過載 面試筆試題 重寫 override 發生在父子類中,方法名相同...

python物件導向 cs遊戲示例

usr local bin python3 coding utf 8 class role object n 123 類變數 name 我是類name def init self,name,role,weapon,life value 100,money 15000 建構函式 在例項化時做一些類的初...