关于SLG类型游戏状态设计请教
看了一下网络上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角色扮演游戏编程>>这书里面说过这类处理很糟糕,如果游戏有非常多的状态要处理,或者需要为每一帧处理一个状态……然后书就介绍用入栈的方式处理状态。除了书上说的各位有其它思路吗?请指点一二。