Python基礎之物件導向思維解決遊戲《天龍八部》

2022-07-17 20:36:13 字數 2509 閱讀 1603

一、程式設計思維:

以物件導向的思維設計《天龍八部》遊戲技能,使得技能效果在增加或者減少時,遊戲技能整體框架不改變,僅僅增加或者減少技能效果

二、思路流程圖如下:

三、變成框架實現**:

"""

天龍八部技能系統

設計原則:

"""class

impacteffect:

"""影響效果

隔離技能釋放器 與 具體的影響效果

"""def

impact(self):

#要求子類必須實現,否則報錯

raise

notimplementederror()

class

lowerdefense(impacteffect):

"""降低防禦力

"""def

__init__

(self,distance,ratio):

#距離self.distance =distance

#比例self.ratio =ratio

defimpact(self):

print("

降低%d公尺內,目標的防禦力為%d.

"%(self.distance,self.ratio))

class

lowerspeed(impacteffect):

"""降低速度

"""def

__init__

(self, time, ratio):

#時間self.time =time

#比例self.ratio =ratio

defimpact(self):

print("

降速為%.1f.時間是:%d

" %(self.ratio, self.time))

class

damage(impacteffect):

"""傷害生命

"""def

__init__

(self, value):

#傷害值

self.value =value

defimpact(self):

print("

傷害%d生命

" %(self.value))

class

skilldeployer:

"""技能釋放器

"""def

__init__

(self,name):

self.name =name

#配置釋放器,儲存當前技能具有的所有影響效果物件

self.__list_impact = self.__config_deployer

()

def__config_deployer

(self):

"""配置釋放器

:return:

"""#

*. 定義配置

#1. 讀取相應的影響效果

#2. 建立影響效果物件

#依賴注入

dict_skill_config =

#["lowerdefense(10,0.5)","damage(30)"]

#根據鍵(技能名稱)獲取值(影響效果列表)

list_impact_name =dict_skill_config[self.name]

#list_impact =

#for item in list_impact_name:

## 建立影響效果物件,並加入到列表中

#return [eval(item) for item in

list_impact_name]

defgenerate_skill(self):

"""生成技能

:return:

"""print(self.name,"

釋放啦!")

#執行所有影響效果

for item in self.__list_impact

:

#編碼期間:認為呼叫的是影響效果(父類impacteffect)

#執行期間:由於建立的是子類物件(傷害生命damage...),所以執行的是子類方法.

item.impact()

#--------測試---------------

#建立技能物件

wei_tuo_chu = skilldeployer("

韋陀杵")#

釋放技能

wei_tuo_chu.generate_skill()

xiang_long_18_zhang = skilldeployer("

降龍十八掌")

xiang_long_18_zhang.generate_skill()

Python之物件導向 物件導向基礎

一 面向過程 物件導向對比 1 面向過程 根據業務邏輯從上到下寫壘 2 函式式思想 將某功能 封裝到函式中,日後便無需重複編寫,僅呼叫函式即可 3 物件導向 對函式進行分類和封裝 1 2 3一步一步抽象,函式式是走向物件導向的中間步驟 函式式的應用場景 各個函式之間是獨立且無共用的資料 物件導向程式...

Python 基礎之物件導向

封裝繼承 類和型別 多型意味著就算不知道變數所引用的物件型別是什麼,還是能對它進行操作,而它也會根據物件 或者類 型別的不同而表現出不同的行為。程式得到了乙個物件,但是並不知道它是怎麼實現的 它可能有多種 形狀 繫結到物件特性上面的函式稱為方法 method 對於乙個變數x來說,我們不需要知道他是字...

Python 基礎之物件導向

python 是乙個高層次的結合了解釋性 編譯性 互動性和物件導向的指令碼語言。python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。python 是一種解釋型語言 這意味著開發過程中沒有了編譯這個環節。類似於php和perl...