J2ME下漫游(追逐)AI的实现
2009-10-12 00:00:00 来源:WEB开发网实现漫游AI通常比较简单,一般包括一个对象(玩家的飞机)的位置,改变别一个对象(敌人的飞机)的速度或位置。对象的漫游移动也可以由随机的或预先定义的方式的影响。通常有3种类型的漫游AI:追逐、躲避和模式。
追逐是这样一种漫游:一个游戏对象跟踪或追逐另外一个游戏对象或多个游戏对象。追逐是很多射击类游戏所使用的一种方法,其中敌方飞机常常追逐玩家飞机。根据玩家飞船的位置,改变外星人的速度和位置,这就实现了追逐。
例如,我做的这个游戏中实现追逐的算法:
/*flag标记具有跟踪能力的小飞机*/
private int flag=-1;
for(int i=0;i<MAX_SP;i++)
if(smallPlane[i].isVisible())
{
if(i==flag)
{
if(smallPlane[i].getX()>playerSprite.getX())
smallPlane[i].move(-speedOfSP, speedOfSP);
else
smallPlane[i].move(speedOfSP, speedOfSP);
}
else
smallPlane[i].move(0,speedOfSP);
}
如程序中可以看出,玩家飞机smallPlane[i]的坐标位置(smallPlane[i].getX())根据玩家飞机playerSprite的位置(playerSprite.getx())而改变。这段代码可能产生的问题就是可能AI工作的非常良好,敌人飞机几乎可能毫不犹豫地纠缠住玩家,基本上使得玩家没有机会躲开它,这可能是游戏设计者所需要的,但是,玩家更希望敌人在追逐玩家的时候能够多飞一会儿。如果希望这个过程更加完美一些,玩家至少有机会能够以机动性战胜外星人。即敌人飞机在追逐玩家精灵时不应该全力以赴地进行躲闪,而是有余力去追击敌人。
更多精彩
赞助商链接