某紙牌遊戲軟體中,人物角色具有人門級(primary)、熟練級(secondary),高手紹(professional)和骨灰級(final)四種等級,角色的等級與其積分相對應,遊戲勝利將增加和分,失敗則扣除積分。人門級具有最基本的遊戲功能 play(),熟練級增加丁遊戲勝利積分加倍功能doublescore),高手級在熟練級基礎上再增加換牌功能 changecards(),骨灰級在高手級基礎上再增加偷看他人的牌功能 peekcards()。現使用狀態模式來設計該系統,繪製類圖並程式設計實現。
新手primary: point < 30, 熟練secondary : 30=< point < 50, 高手professionary: 50=< point < 60, 骨灰final: point > =60
其中積分翻倍,就只是加20分而已,換牌、看牌就只輸出提示資訊
public
class
pro}
class
player
public
void
setname
(string name)
public
state
getstate()
public
void
setstate
(state state)
public
player
(string name)
public
void
play_win()
public
void
play_lose()
public
void
doublescore()
public
void
changecards()
public
void
peekcards()
}abstract
class
state
public
void
play_win()
public
void
doublescore()
public
void
changecards()
public
void
peekcards()
public
string
getrankname()
public
void
setrankname
(string rankname)
public
abstract
void
checkstate
(int point);}
class
primarystate
extends
state
public
primarystate
(state state)
@override
public
void
checkstate
(int point)}}
class
secondarystate
extends
state
public
void
doublescore()
@override
public
void
checkstate
(int point)
}class
professionalstate
extends
state
@override
public
void
doublescore()
@override
public
void
changecards()
@override
public
void
checkstate
(int point)
else
if(point <50)
}}class
finalstate
extends
state
@override
public
void
doublescore()
@override
public
void
changecards()
@override
public
void
peekcards()
@override
public
void
checkstate
(int point)
}
設計模式 狀態模式
狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況,把狀態的判斷邏輯轉移到表示不同狀態的一些列類當中,可以把複雜的判斷邏輯簡化。當乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行...
設計模式 狀態模式
1.概述 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。2.解決的問題 主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。3.模式中的角色 3.1 上下文環境 context 它定義了客...
設計模式 狀態模式
描述 允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的類。主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。通常應用在有好多狀態的流程中。類圖 以下程式模擬糖果機器投幣取糖果的狀態流程。1.定義狀態...