关于SLG类型游戏状态设计请教

gamenpc 2010-09-25 05:24:38
看了一下网络上J2ME的SLG游戏源码,大致上是根据状态来判断的:
switch(CurrentScene)
{
case 0://章节显示,并载入相关信息
break;
case 1://游戏大地图状态
//光标移动判断
DealCursorMove();
//人物移动
DealPersonMove();
DrawPerson(gb);//绘制人物
DealCursor();//绘制光标
DealMapRevise();//地形修正
break;
case 2://菜单1(待机,攻击,使用道具,移动)
DrawBuffer(gb);//绘制静态缓存
DrawPerson(gb);//绘制人物
DrawMenu(gb,CurrentMenu);
DealCursor();
break;
case 3://攻击选定
DrawBuffer(gb);//绘制静态缓存
if(targetstate == 2)//攻击对象选定
{
DrawRange(gb, targetSX, targetSY, currentactatkmin, currentactatkmax, 0x00ff0000);
DrawPerson(gb);//绘制人物
DealCursor();
}
else if(targetstate == 3)//攻击过程
{
atkcg(gb);
targetstate = 0;
currentactstate = 0;
CurrentScene = 1;
}
break;
}
记得<<DirectX角色扮演游戏编程>>这书里面说过这类处理很糟糕,如果游戏有非常多的状态要处理,或者需要为每一帧处理一个状态……然后书就介绍用入栈的方式处理状态。除了书上说的各位有其它思路吗?请指点一二。
...全文
291 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gamenpc 2010-10-01
  • 打赏
  • 举报
回复
2楼那位说得比较深奥,不太明白。
没有怪癖,只不过手头上只有J2ME关于战略游戏的相关源码,如果哪位有C++的战略游戏源码让我学习学习就更好了。
  • 打赏
  • 举报
回复
2楼思密达说得很多,switch的状态都是死的,消息传递要灵活的话。

还有一点想不明白,你为什么用java来c程序,难道你和我一样也有虐待java怪癖?
gamenpc 2010-09-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhangci226 的回复:]
也可以通过消息来判断

一般发生某一事件即可发送一个消息,然后根据消息来判断
[/Quote]
这样和那个switch差不多吧?
张赐 2010-09-26
  • 打赏
  • 举报
回复
也可以通过消息来判断

一般发生某一事件即可发送一个消息,然后根据消息来判断
gamemagic 2010-09-25
  • 打赏
  • 举报
回复
想象一下ADOBE FLASH是如何切换画面的?没错,它有一个“关键帧”的概念。

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧