昨天雲裡霧裡的,基本搞不懂
今天又練習了一上午,基本品出味道了
用具體的例子來表達一下這整個的推倒過程,來加深一下印象:
首先,拿到需求,分析需求.
"玩家攻擊敵人,敵人受傷(減血,加分)後可能死亡(掉落裝備)。"
這句話中有玩家和敵人,(玩家)攻擊,(敵人)受傷,(敵人)減血,(玩家)加分,(敵人)死亡,(敵人)掉落裝備,下一句話的行為同理.要把他們都加以分析分類,建立起類和方法,這是封裝的設計角度.
我們可以看出來:
主語是兩類:玩家和敵人;
互動方法有四種:玩家攻擊,玩家受傷;敵人攻擊,敵人受傷,雙方各兩種;
互動結果有八種:敵人減血,敵人死亡,敵人掉落裝備;玩家加分,玩家減血,玩家碎屏,玩家死亡,遊戲結束
這樣,大致就有了兩個類:玩家,和玩家的各種行為;敵人和敵人的各種行為.具體類裡邊的各種方法,並不是一氣呵成寫出來的,而是要根據需求先建立測試**,再按照測試**需要用到的方法,去一步一步編寫的!
這裡模擬著把需求**化,便會逐步得到需要定義的東西:
1,需要玩家(建立玩家類)p01 = user( ),裡邊的先不寫
2,需要敵人(建立敵人類)e01 = enemy(),裡邊的先不寫
3,需要攻擊這個動作,p01.attack(e01),去定義attack
4,定義attack後發現,需要乙個敵人受傷的動作作為回應,敵人damage
5,敵人damage發現需要敵人有hp,和受傷的程度(玩家的attack)
6,再接著思考:敵人可能血量為0,死亡,定義death,同時掉落裝備
7,再接著思考:敵人受傷,玩家就要加分,需要玩家分數count
接下來是第二句話:
1,敵人攻擊玩家,需要敵人攻擊這個動作,同時需要敵人的攻擊值
2,攻擊的結果是玩家受傷,定義玩家受傷
3,玩家受傷後,減血.定義玩家的血量/減血和碎屏的現象
4,玩家死亡的判斷
5,玩家死亡後的顯示,遊戲結束
當然,根據不同的理解和實現要求,很多東西可以簡化,做到主次有別,像這個需求裡,括號裡的部分不做過多要求,就可以不去具體實現,體現一下就好.例項**如下:
"""
根據物件導向思想,描述下列情景。
玩家攻擊敵人,敵人受傷(減血,加分)後可能死亡(掉落裝備)。
敵人攻擊玩家,玩家受傷(減血,碎屏)後可能死亡(遊戲結束)。
[核心:行為的不同,使用類區分。]
"""class
player
:def
__init__
(self, hp=
0,atk =0)
: self.atk = atk
self.hp = hp
defattack
(self,target)
: target.damage(self.atk)
defdamage
(self,value)
:print
("減血"
)print
("碎屏"
) self.hp -= value
if self.hp <=0:
self.death(
)def
death
(self)
:print
("遊戲結束"
)class
enemy
:def
__init__
(self, hp=
0, atk=0)
: self.hp = hp
self.atk = atk
defattack
(self,target)
: target.damage(self.atk)
defdamage
(self,value)
: self.hp -= value
print
("敵人扣血"
)print
("給玩家加分"
)if self.hp <=0:
self.death(
)def
death
(self)
:print
("死亡"
)print
("掉落裝備"
)p01 = player(
99999,50
)e01 = enemy(
100,10)
p01.attack(e01)
e01.attack(p01)
p01.attack(e01)
資料結構Day12
首先需要明確的是二叉樹和二叉查詢樹的區別 二叉樹就是我們正常所理解的這種樹形結構,每乙個節點都包含乙個項和兩個指向其他節點 稱為子節點 的指標,分為左節點和右節點。樹的頂部,稱為根 當乙個節點沒有子節點時,稱為葉節點。而二叉查詢樹是在二叉樹的基礎上有如下規定 左節點的項在父節點的項前面,右節點的項在...
資料結構 day 12
雙鏈表 問題 實現乙個雙鏈表,雙鏈表初始為空,支援5種操作 1 在最左側插入乙個數 2 在最右側插入乙個數 3 將第k個插入的數刪除 4 在第k個插入的數左側插入乙個數 5 在第k個插入的數右側插入乙個數 現在要對該鍊錶進行m次操作,進行完所有操作後,從左到右輸出整個鍊錶。注意 題目中第k個插入的數...
1 2封裝陣列之新增元素
在上一小節中,我們對陣列進行了乙個基本的封裝,該小節中,我們在上一次基礎上,新增往陣列新增元素的方法 1.向所有元素後新增乙個元素 思路 1 先判斷當前陣列容量是否已滿,未滿則轉入 2 否則丟擲異常 2 在元素下標為size的位置插入新元素 3 維護我們的size值 向所有元素後新增元素 publi...