用打怪游戏实例升级版,理解python面向对象
生活随笔
收集整理的這篇文章主要介紹了
用打怪游戏实例升级版,理解python面向对象
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為了能夠讓大家充分理解什么是面向對象,在上一章節中,我們特地講解了python的面向過程,并用python并不擅長的面向過程的編程思想簡單設計了一個打怪游戲實例。這一節,我們將正式地來介紹Python的面向對象的編程思想OOP,并將上一節中設計的打怪游戲的實例代碼進行面向對象地重新設計編寫。
什么是面向對象
面向對象:可以通俗的理解為“直接用某一個具體的事物來進行編程!比如讓人換個衣服,讓人吃飯,或者讓動物飛翔等等”。當然了,這樣定義可能不是很正確,但個人認為這樣更有助于理解面向對象。
好了,下面我們將通過升級上一章節python面向過程的編程思想,打怪游戲實例中的打怪游戲實例代碼,變為面向對象的方法模式,同時優化了一些程序邏輯。
python面向對象打怪游戲程序設計實例
import time #導入time庫 class NPC:#聲明了一個游戲NPC的類,用于封裝NPC的屬性和方法def __init__(self, se, hp): #初始化數據,相當于初始化對象的屬性,se為武力值,hp為血量self.se = seself.hp = hpdef beat(self): return self.sedef upexp(self): self.se = self.se + 2def uphp(self): self.hp = 5#上面的類,就相當于游戲中的人物模型,有了這樣的人物模型,接下來,我們就可以直接通過python的面向對象對人物直接進行編程。def fire(hero, boss):while hero.hp > 0 and boss.hp > 0:if hero.hp <= 2:print('英雄,你的血量為%s'%hero.hp)uphp_inp = input('英雄是否要先撤退補充血量(y/n)?')if uphp_inp == 'n':boss.hp = boss.hp - hero.beat()print('英雄攻擊,boss的血量還剩下%s'%boss.hp)if boss.hp > 0:time.sleep(1)hero.hp -= boss.beat() #和上面boss.hp的式子一樣print('boss攻擊,英雄的血量還剩下%s' %hero.hp)if hero.hp <= 0:print('英雄血量小于0,game over')returnelse:print('boss已經被消滅,恭喜英雄!')return else:hero.uphp() #升級血量boss.hp -= hero.beat()print('英雄攻擊,boss血量還剩下%s'%boss.hp)if boss.hp <= 0:print('boss血量小于0,已經被消滅')breaktime.sleep(1)hero.hp -= boss.beat()print('boss攻擊,英雄血量還剩下%s'%hero.hp)if hero.hp <= 0:print('英雄血量過低,game over') time.sleep(1)#游戲的主函數 def mian():print('歡迎來到大器編程x1y1z1.com的python面向對象的打怪游戲實例!')time.sleep(1)print('英雄正在創建...')time.sleep(1)hero = NPC(1,5) #創建一個NPC對象,并賦值給變量hero,其中se=1,hp=5print('英雄已經誕生,武力值為%s,血量為%s' %(hero.se, hero.hp))time.sleep(1)boss = NPC(2,10) #創建了另一個NPC對象,并賦值給變量boss,其中se=2,hp=10yn_inp = input('boss揮舞著棒槌步步緊逼,英雄是否決定迎戰(y/n):')if yn_inp == 'n':print('英雄與世無爭,退隱江湖!游戲退出!')return else:print('boss的武力值為%s,血量為%s' %(boss.se, boss.hp))time.sleep(1)upexp_inp = input('英雄是否要升級武力值(y/n):')if upexp_inp == 'n':fire(hero, boss)else:upexp_inp = input('升級武力值之前,需要先回答問題,請問1+1=?:')while upexp_inp != '2':upexp_inp = input('回答錯誤,請問1+1=?:')hero.upexp()fire(hero, boss)#一定要記得調用主函數main(),否則程序無法執行。 mian()更多python面向對象的打怪游戲代碼的解析以及面向對象的內容,可以參考下面內容:
python的面向對象OOP,打怪游戲實例升級版https://www.x1y1z1.com/python/pyoop.html
總結
以上是生活随笔為你收集整理的用打怪游戏实例升级版,理解python面向对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python控制台英汉-汉英电子词典(代
- 下一篇: ES京东搜索