嗯.. SVN上上傳PlayerState.cbp
該工程實(shí)現(xiàn) State 設(shè)計(jì)模式
具體如下...
1 //forward decl
2 class PlayerState;
3
4 class Player
5 {
6 public:
7 Player(PlayerState* initState);
8
9 void walk();
10 void stand();
11 void jump();
12
13 void setState(PlayerState* state);
14 protected:
15 PlayerState* mState;
16
17 //decl uncopyable
18 Player(const Player& player);
19 Player& operator=(const Player& rhs);
20 };
21
玩家的行為轉(zhuǎn)由狀態(tài)對(duì)象處理
//forward decl
class Player;
class PlayerState
{
public:
virtual void walk(Player* player) = 0;
virtual void stand(Player* player) = 0;
virtual void jump(Player* player) = 0;
};
class Walking : public PlayerState
{
public:
void walk(Player* player);
void stand(Player* player);
void jump(Player* player);
static Walking* getInstancePtr();
protected:
//singleton
Walking();
static Walking* mInstance;
};
class Standing : public PlayerState
{
public:
void walk(Player* player);
void stand(Player* player);
void jump(Player* player);
static Standing* getInstancePtr();
protected:
Standing();
static Standing* mInstance;
};
class Jumping : public PlayerState
{
public:
void walk(Player* player);
void stand(Player* player);
void jump(Player* player);
static Jumping* getInstancePtr();
protected:
Jumping();
static Jumping* mInstance;
};
相對(duì)比較簡(jiǎn)單... 可以當(dāng)一個(gè)非常無聊的文字MUD來玩..
具體見
http://code.google.com/p/charlib/source/browse/trunk/
下的 PlayerState 文件夾
posted on 2009-03-02 18:05
Charlie 侯杰 閱讀(1360)
評(píng)論(2) 編輯 收藏 引用