【python】模擬打怪游戲:怪獸(monster),玩家(hero)

游戲模式:

  • 假設(shè)有怪獸(monster)和英雄(hero)兩個(gè)角色,二者為敵對(duì)狀態(tài)
    假設(shè)兩個(gè)角色初始血量為100,攻擊力的傷害服從隨機(jī)分布(7,17),二者相互攻擊,判斷誰(shuí)獲勝?
# # 定義精靈
class Sprite:
    def __init__(self, name):
        self.blood = 100  # 假設(shè)初始血量為:100
        self.power = 12  # 假設(shè)基礎(chǔ)攻擊能力:12
        self.name = name

    def attack(self, monster):
        # 假設(shè)每一次攻擊的傷害 服從隨機(jī)分布(7,17)
        minus = rn.randrange(self.power - 5, self.power + 5)
        print(minus)
        if monster.has_living():
            monster.minus_blood(minus)
        print(monster.name + ' 剩余血量:\n' + str(monster.blood) + "\n")
        print('---------------------')
        # 輸出剩余血量

    def minus_blood(self, num):
        self.blood -= num

    def has_living(self):  # 判斷是否還有血量
        if self.blood > 0:
            return True
        return False
###########################################################
m = Sprite('【魔王】')  # 創(chuàng)建實(shí)例"魔王"
h = Sprite('【圣騎士】')  # 創(chuàng)建實(shí)例“圣騎士”
print(m.name + '的初始血量:(保密 @-@)')
print(h.name + '的初始血量:100')
while m.has_living() and h.has_living():
    print(m.name + ' 對(duì) ' + h.name + '\n造成傷害:')
    m.attack(h)
    print(h.name + ' 對(duì) ' + m.name + ' 造成傷害:')
    h.attack(m)

if m.has_living():
    print(m.name + ' 勝利!')
    print('【游戲結(jié)束】')
elif h.has_living():
    print(h.name + ' 勝利~!')
    print('【游戲結(jié)束】')
else:
    print(m.name + ' 和 ' + h.name + '均陣亡!')
    print('【游戲結(jié)束】')

內(nèi)存分析:


游戲模擬內(nèi)存分析.png

運(yùn)行結(jié)果:

【魔王】的初始血量:(保密 @-@)
【圣騎士】的初始血量:100
【魔王】 對(duì) 【圣騎士】
造成傷害:
8
【圣騎士】 剩余血量:
92

---------------------
【圣騎士】 對(duì) 【魔王】 造成傷害:
9
【魔王】 剩余血量:
91
         +++++
# 為簡(jiǎn)短篇幅,此處縮略部分
         +++++
---------------------
【圣騎士】 對(duì) 【魔王】 造成傷害:
7
【魔王】 剩余血量:
24

---------------------
【魔王】 對(duì) 【圣騎士】
造成傷害:
15
【圣騎士】 剩余血量:
0

---------------------
【圣騎士】 對(duì) 【魔王】 造成傷害:
15
【魔王】 剩余血量:
9

---------------------
【魔王】 勝利!
【游戲結(jié)束】
第一次進(jìn)階:

通過(guò)繼承Sprite類,來(lái)嘗試開發(fā)一個(gè)新的功能:

  • 給玩家(Hero)角色加一個(gè)終結(jié)技能(英雄有10%的幾率觸發(fā)終結(jié)技能);
  • 為了保證游戲的體驗(yàn)感(不能厚此薄彼?(′???`?)),給怪獸(Monster)增加血量、增加基礎(chǔ)傷害;
這里主要寫了兩個(gè)繼承Sprite類的子類

class Hero(Sprite):
    def bug_attack(self,monster):
        monster.minus_blood(monster.blood)

    def attack(self,monster):
        super(Hero, self).attack(monster)
        num = rn.randint(0,4)
        if num == 1:
            print(self.name + ' 使用技能:終結(jié)')
            print(h.name + '對(duì)' + m.name + '造成傷害:%d'%(monster.blood))
            self.bug_attack(monster)

class Monster(Sprite):
    def __init__(self, name):
        self.blood = 200
        self.power = 15
        self.name = name

輸出實(shí)例:

【魔王】的初始血量:(保密 @-@)
【圣騎士】的初始血量:100
【魔王】 對(duì) 【圣騎士】造成傷害:
12
【圣騎士】 剩余血量:
88

---------------------
【圣騎士】 對(duì) 【魔王】 造成傷害:
8
【魔王】 剩余血量:
192

---------------------
【魔王】 對(duì) 【圣騎士】造成傷害:
14
【圣騎士】 剩余血量:
74

---------------------
【圣騎士】 對(duì) 【魔王】 造成傷害:
13
【魔王】 剩余血量:
179

---------------------
【圣騎士】 使用技能:終結(jié)
【圣騎士】對(duì)【魔王】造成傷害:179
【圣騎士】 勝利~!
【游戲結(jié)束】
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容