请教一个游戏效果实现的算法
就是控制人物移动的功能,最先经理要求利用方向功能键单步控制人物的移动,然后相应的控制到达4个目标点的其中的一个,但现在需求改了 ,要求利用1,3,7,9这几个数字键,当按下相应数字按键时,直接实现让人物自动移动到各个相应的目标点,按原来做的那个方案,现在改感觉不好改了。大家帮忙想一下解决方案,谢谢。
最先实现代码:
................
................此代码部分实现在run方法里面
//人物移动绘制
switch(pstate)
{
case 0://没改变坐标时状态
g.setClip(ppositionx,ppositiony,24,36);
g.drawImage(imsource,ppositionx-58,ppositiony-244,0);
break;
case 1:
if(!pstepdown)
{
offg.setClip(ppositionx,ppositiony,24,36);
offg.drawImage(imsource,ppositionx-82,ppositiony-244,0);
pindex++;
}
else
{
offg.setClip(ppositionx,ppositiony,24,36);
offg.drawImage(imsource,ppositionx-106,ppositiony-244,0);
pindex++;
}
break;
case -1:
if(!pstepup)
{
offg.setClip(ppositionx,ppositiony,24,36);
offg.drawImage(imsource,ppositionx-10,ppositiony-244,0);
pindex++;
}
else
{
offg.setClip(ppositionx,ppositiony,24,36);
offg.drawImage(imsource,ppositionx-34,ppositiony-244,0);
pindex++;
}
break;
case 2:
if(!pstepleft)
{
offg.setClip(ppositionx,ppositiony,15,38);
offg.drawImage(imsource,ppositionx-4,ppositiony-303,0);
pindex++;
}
else
{
offg.setClip(ppositionx,ppositiony,15,38);
offg.drawImage(imsource,ppositionx-25,ppositiony-303,0);
pindex++;
}
break;
case -2:
if(!pstepright)
{
offg.setClip(ppositionx,ppositiony,16,38);
offg.drawImage(imsource,ppositionx-68,ppositiony-304,0);
pindex++;
}
else
{
offg.setClip(ppositionx,ppositiony,16,38);
offg.drawImage(imsource,ppositionx-89,ppositiony-304,0);
pindex++;
}
}
................
................
public void keyPressed(int n)
{
...........
...........
//当游戏处于进行状态
if(gamestate==GAMEING || gamestate==GAMEGOON)
{
int k=this.getGameAction(n); //若用户按下下键
if(k==Canvas.DOWN)
{
if(ppositiony<=140)
{
ppositiony+=20;
//pstepdown=false;
pstepdown=!pstepdown;
pstate=1;
}
}
if(k==Canvas.UP) //若用户按下上键
{
if(ppositiony>=120)
{
ppositiony-=20;
//pstepup=false;
pstepup=!pstepup;
pstate=-1;
}
}
if(k==Canvas.LEFT) //若用户按下左键
{
if(ppositionx>=100)
{
ppositionx-=20;
//pstepleft=false;
pstepleft=!pstepleft;
pstate=2;
}
}
if(k==Canvas.RIGHT) //若用户按下右键
{
if(ppositionx<=120)
{
ppositionx+=20;
//pstepright=false;
pstepright=!pstepright;
pstate=-2;
}
}
if(k==Canvas.FIRE) //若用户按下确定键
{
turn=true;
}
}
..........
..........
}
注:上部分代码主要实现在相应坐标绘制人物功能,按键响应函数是当用户按下按键时实现改变人物的坐标的功能
现在要修改实现成上述后面的那种效果,有什么比较好的算法了,大家帮忙想一下,谢谢