小小千想和您聊一聊

当前位置: 首页> 技术分享> 坦克大战系列12-高级躲避策略

坦克大战系列12-高级躲避策略

  前言

  前面的篇幅大多数都在跟大家描述一些如何锁定、瞄准、进攻对方的方式,但常言道,没有防守只会任人击打,所以本篇内容将告诉大家如何更好的躲避敌人或者战场的其他因素。

  高级躲墙方法

  其实躲开墙壁是一件很容易的事情,只要把目标坐标值限制在场地内就可以,即:

  横轴坐标值小于场地宽且大于零;

  纵向坐标值小于场地高且大于零。

  如果你的机器人是随机运动的话,那么你只要把随机式设成:

  1. nextX = Math.random() * ( getBattleFieldWidth() - 100 ) + 50 ;

  2. nextY = Math.random() * ( getBattleFieldHeight() - 100 ) + 50 ;

  或者:

  1. nextX = Math.random() * ( getBattleFieldWidth() - 50 ) ;

  2. nextY = Math.random() * ( getBattleFieldHeight() - 50 ) ;

  3. if( nextX < 50 ){

  4. nextX += 50;

  5. }

  6. if(nextY < 50){

  7. nextY += 50;

  8. }

  高级躲避子弹方法

  由于机器人只能知道其它机器人的距离、方位、方向、速度和能量等级,但子弹是不能被扫描到的,所以子弹的躲避只能靠取得对方能量的减少量来获知。当对方的能量下降范围在(0.1~3)的时候,我们就认为它发射了子弹,那么就采取行动(比如改变方向,改变路线等),从而达到躲开子弹的目的。当它再发现我的运动规律而发炮时我又改变行动,这样不断反复。

  具体实现如下:

  1. double changeInEnergy = previousEnergy-e.getEnergy();

  2. if (changeInEnergy>0 && changeInEnergy<=3) {

  3. movementDirection = -movementDirection; setAhead((e.getDistance()/4+25)*movementDirection);

  4. }

  其他要注意的就是:

  1. 怎样保存敌方机器人的信息

  2. 子弹的能量的控制(bulletpower)

  3. 离敌人的远近控制(getDistance)

  4. 撞到其他机器人的时候该怎么做

  5. 被子弹击中又要怎么做等

  这些当中,最好用的是Math.random(),最可怕的也是Math.random()!

  好啦,本期内容就到这里喽,我是不会玩游戏却非得写游戏的陈老师,一起来学习JAVA吧!

上一篇:HTML5工具初识之网页编辑器

下一篇:beeprint:让你的调试打印更友好

QQ技术交流群

千锋Java开发官方①群
811099962

加入群聊