Creative Commons License
本Blog采用 知识共享署名-非商业性使用-禁止演绎 3.0 Unported许可协议 进行许可。 —— Fox <游戏人生>

游戏人生

游戏人生 != ( 人生 == 游戏 )
站点迁移至:http://www.yulefox.com。请订阅本博的朋友将RSS修改为http://feeds.feedburner.com/yulefox
posts - 62, comments - 508, trackbacks - 0, articles - 7

设计模式(二)——State

Posted on 2008-11-19 00:57 Fox 阅读(1882) 评论(3)  编辑 收藏 引用 所属分类: T技术碎语

State模式对应到C++的多态特性。

State模式适用较广,这儿给出比较常见易懂的三种情况:

1. 当怪物在面对不同职业和特性的玩家时对应不同的AI处理和技能释放:

CSkill* pAttackSkill;

if( pPlayer->MagicImmune() ) pAttackSkill = SomePhysicalAttackSkill;

else if( pPlayer->PhysicalImmune() ) pAttackSkill = SomeMagicAttackSkill;

...

pAttackSkill->Begin();

...

或者使用分支结构:

CSkill* pAttackSkill;

switch( pPlayer->GetOccupation() )

{

  case WARRIOR: pAttackSkill = SomeLongRangeSkill; break;

  case MAGICIAN: pAttackSkill = SomeForceSkill; break;

  case NIMROD: pAttackSkill = SomeMagicSkill; break;

...

}

pAttackSkill->Begin();

...

阅读全文

Feedback

# re: 设计模式(二)&mdash;&mdash;State  回复  更多评论   

2011-07-12 15:19 by air Jordan shoes
有点难懂啊 刚学C++

# re: 设计模式(二)&mdash;&mdash;State  回复  更多评论   

2011-07-17 12:50 by swiss replica watches
Welcome to our aces accumulating of replica watches!

# re: 设计模式(二)&mdash;&mdash;State  回复  更多评论   

2011-09-05 15:20 by replica watches
C++ 看不懂啊~!

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理