state模式在遊戲中的運用

2021-04-21 00:22:06 字數 1317 閱讀 5666

好久沒有寫blog了!

最近決定多寫寫,把自己的經驗多給大家分享!

state模式的定義:

不同的狀態,不同的行為;或者說,每個狀態有著相應的行為.

我舉個遊戲應用的例子吧!mmo中,遊戲世界可以分為(登陸時前,進入遊戲中,進入遊戲後)3個狀態(我打的比喻)

首先 抽象狀態的基類

class game; 

class state

public:

/// 狀態執行

virtual void handle(game* game) = 0;

/// 狀態切換

virtual void  nextstate(game* game) = 0;

然後處理具體的狀態

class loginstate : public state

public:

void handle(game* game) {

game->loginhandle();

void  nextstate(game* game) {  

// 根據不同的情況

//  更改mstate

class loginingstate: public state

public:

void handle(game* game) {

game->loadinghandle();

void  nextstate(game* game) {

// 根據不同的情況

//  更改mstate

class gamestate: public state

public:

void handle(game* game) {

game->gamehandle();

void  nextstate(game* game) {

// 根據不同的情況

//  更改mstate

我們定義遊戲的管理類

class game

private:

state* mstate;

public:

virtual void  loginhandle(){

virtual void  loadinghandle(){

virtual void  gamehandle(){

public:

// 狀態改變

void nextstate(){

mstate->nextstate(this);

// 排程

void handle(){

mstate->handle(this);

設計模式在遊戲中的應用 簡單工廠模式(一)

自己作為乙個剛畢業的菜鳥,有幸能夠和牛人們一起工作很開心。當時策劃提出乙個需求,需要針對每個職業進行不同的能量恢復。我當時接到這個需求,心中暗喜,這還不簡單,把每個職業的恢復率放到乙個陣列裡面,然後接著各種if.else.當時還為這種能在陣列裡面直接修改資料,讓資料和邏輯分離開來感到開心。接著策劃提...

設計模式在遊戲中的應用 建造者模式(九)

建造者模式 builder pattern 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。建造者模式是一種物件建立型模式。通過這個定義,我們可以得出建造者是一種建立型模式,也就是說建造者模式的輸出是乙個物件,也就是uml類圖中的product。我們先看看建造者模式的uml...

遊戲中的設計模式 工廠模式

現在的網遊更新很快,要延長網路遊戲生命週期的方法是,更新,不斷地更新,不斷的將新內容呈現於玩家面前。這要求遊戲程式的設計要有彈性,的重用至關重要。今天就說說遊戲中的工廠模式。說到工廠模式,有簡單工廠模式,工廠方法模式,抽象工廠模式。一 簡單工廠模式 ps 物件導向的程式設計,並不是類越多越好,類的劃...