2022-12-06 python面向?qū)ο髮崙?zhàn)1:打敵人

主要用到"對象關(guān)聯(lián)“操作糠雨,何為對象關(guān)聯(lián)翼岁,請看下面代碼:
“教室里有學生”

# 本例演示對象關(guān)聯(lián)

# 首先定義一個學生類
class Student(object):
    def __init__(self, name):
        self.name = name


# 然后定義一個教室類
class ClassRoom(object):
    def __init__(self, num):
        self.num = num
        self.stus = []

    # 關(guān)聯(lián)方式,直接給ClassRoom定義一個屬性民效,存儲學生對象的引用区岗,即實例名
    def add_stu(self, stu):
        self.stus.append(stu)
    

if __name__ == "__main__":
    s = Student("小張")
    c = ClassRoom("三年一班")
    # 將s添加到c的stus屬性中
    c.add_stu(s)
    # 調(diào)用教室對象的學生屬性,獲取學生的姓名
    print(c.stus[0].name)

基于此眠菇,寫了一個稍微復雜點的示例:
“勞拉”開槍打死了“visa"

'''
定義人边败、槍、子彈捎废、彈夾等類
創(chuàng)建兩個玩家, 一個持槍射擊10次把對方打死
'''

# 定義人笑窜,屬性:姓名,血量登疗,持有的槍
class Player(object):
    def __init__(self, name, hp):
        self.name = name
        self.hp = hp
        self.gun = None # 需要通過equip_gun()方法配槍

    def fire(self, enemy):
        '''
        開槍射擊另一個玩家使其掉血, 同時自己手中的槍中的彈夾中的子彈減少最上面的一個(最上面的一個是最后壓入的, 故用pop()方法)\n
        param: enemy: 對方玩家對象引用
        '''
        bullet_temp = self.gun.clip.bullets.pop()
        bullet_temp.hit_player(enemy)

    def equip_gun(self, gun):
        '''
        裝槍方法
        '''
        self.gun = gun
    
    def equip_clip(self, clip):
        '''
        裝彈夾方法
        '''
        self.gun.clip = clip

    def equip_bullet(self, bullet):
        '''
        裝彈方法
        '''
        self.gun.clip.bullets.append(bullet)


# 定義槍排截,屬性:槍型號,彈夾(默認沒有彈夾辐益,需要安裝)
class Gun(object):
    def __init__(self, name):
        self.name = name
        self.clip = None


# 定義子彈断傲,屬性:殺傷力
class Bullet(object):
    def __init__(self, power:int):
        self.power = power

    # 子彈殺傷敵人的方法
    def hit_player(self, player):
        if player.hp <= self.power:
            player.hp = 0
            print("%s已被擊斃" % player.name)
        else:
            player.hp -= self.power


# 定義彈夾,屬性:彈夾容量
class Clip(object):
    def __init__(self, volume:int):
        self.volume = volume
        self.bullets = [] # 用來存儲所有子彈對象的引用


# 控制方法智政,完成打敵人整個流程
def main():
    # 建立玩家和敵人玩家
    player_a = Player("勞拉", 100)
    player_b = Player("visa", 100)

    # 建立槍支和彈夾认罩、子彈
    ak_47 = Gun("ak47")
    clip_10 = Clip(10) # 該彈夾容量為10
    bullet_1 = Bullet(11) # 該子彈殺傷力為11
    bullet_2 = Bullet(9) # 該子彈殺傷力為9
    bullets = [bullet_1, bullet_2]

    # 給玩家配槍、配彈夾续捂、彈夾裝10發(fā)子彈垦垂,前5發(fā)是bullet_1, 后五發(fā)是bullet_2
    player_a.equip_gun(ak_47)
    player_a.equip_clip(clip_10)
    for i in range(0,2):
        bullet_temp = bullets[i]
        for j in range(0,5):
            player_a.equip_bullet(bullet_temp)
    print("{}準備就緒, 持槍{}, 子彈{}發(fā),可以射擊".format(player_a.name, player_a.gun.name, len(player_a.gun.clip.bullets)))

    i = 0
    while len(player_a.gun.clip.bullets):
        i += 1
        print("射擊敵人第{0}次, 射擊前敵人hp為{1}".format(i, player_b.hp))
        player_a.fire(player_b)
        if i < 10:
            print("射擊后敵人hp為{0}".format(player_b.hp))

if __name__ == "__main__":
    main()




?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牙瓢,一起剝皮案震驚了整個濱河市劫拗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌矾克,老刑警劉巖页慷,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡差购,警方通過查閱死者的電腦和手機四瘫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來欲逃,“玉大人找蜜,你說我怎么就攤上這事∥任觯” “怎么了洗做?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長彰居。 經(jīng)常有香客問我诚纸,道長,這世上最難降的妖魔是什么陈惰? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任畦徘,我火速辦了婚禮,結(jié)果婚禮上抬闯,老公的妹妹穿的比我還像新娘井辆。我一直安慰自己,他們只是感情好溶握,可當我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布杯缺。 她就那樣靜靜地躺著,像睡著了一般睡榆。 火紅的嫁衣襯著肌膚如雪萍肆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天胀屿,我揣著相機與錄音塘揣,去河邊找鬼。 笑死碉纳,一個胖子當著我的面吹牛勿负,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播劳曹,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼奴愉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了铁孵?” 一聲冷哼從身側(cè)響起锭硼,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蜕劝,沒想到半個月后檀头,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體轰异,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年暑始,在試婚紗的時候發(fā)現(xiàn)自己被綠了搭独。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡廊镜,死狀恐怖牙肝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嗤朴,我是刑警寧澤配椭,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布,位于F島的核電站雹姊,受9級特大地震影響股缸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吱雏,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一敦姻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧坎背,春花似錦替劈、人聲如沸寄雀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盒犹。三九已至懂更,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間急膀,已是汗流浹背沮协。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留卓嫂,地道東北人慷暂。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像晨雳,于是被迫代替她去往敵國和親行瑞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,576評論 2 349

推薦閱讀更多精彩內(nèi)容