設計模式 狀態模式練習

2021-10-11 10:23:12 字數 2479 閱讀 1060

某紙牌遊戲軟體中,人物角色具有人門級(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.定義狀態...