ITPub博客

首页 > > > JAVA之坦克大战系列12-高级躲避策略

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

作者:duanhao 时间:2019-09-12 10:51:41 0 删除 编辑

前言


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


高级躲墙方法


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



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



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



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


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

吧!



原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-09-06

  • 博文量
    739
  • 访问量
    25590