Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  java  >  正文 Robocode学习笔记(三)

Robocode学习笔记(三)

发布时间:2018-12-06   编辑:www.jquerycn.cn
jquery中文网为您提供Robocode学习笔记(三)等资源,欢迎您收藏本站,我们将为您提供最新的Robocode学习笔记(三)资源
<script>ec(2);</script>

  昨天看了Robocode的基础知识,自己写了个bot,放到BattleField上缺是屡战屡败……伤心ing。

  Bot对于周围环境的了解非常有限。它可以知道其它机器人的距离、方位、方向、速度和能量等级。但是,它看不到子弹。怎么才可以有效的躲避对方的子弹呢?

  Bot虽然看不到子弹,但是对方的能量等级还是可以scan到了。对方只要发射子弹就会耗损能量,并且耗损的能量介于0和3之间。根据这些线索,如何发现其它机器人正向它开炮对于“笨笨”的Bot不就易如反掌了? ^_^

  当Bot检测到对方发射子弹的信息时,向左或向右移动一小步,嘿嘿,子弹就打不到咯~并且大多数Bot的瞄准方法是要么直接向目标开炮,要么试着根据Bot的速度和方向来推算位置。如果我的Bot不移动,两种算法都会正好冲着这个Bot的当前位置开炮。哈哈哈,这时我的Bot再移动,不就全部都打不到啦。(是不是颇有武侠小说里以静制动的高手味道?^_^)

  下面是部分代码和注释:

  double previousEnergy = 100; //初始状态对方能量为100  int movementDirection = 1;  //移动方向  int gunDirection = 1; //炮管方向

  /**   * 当检测到对方Bot,触发事件   * @param e   */  public void onScannedRobot(ScannedRobotEvent e) {    //调整自己和对方之间的角度    setTurnRight(e.getBearing() 90-30*movementDirection);

    //如果对方的能量损耗一定值,进行躲避动作    double changeInEnergy = previousEnergy - e.getEnergy();    if (changeInEnergy>0 && changeInEnergy<=3) {      //躲避!      movementDirection = -movementDirection; //和上次的躲避方向相反      setAhead((e.getDistance()/4 25)*movementDirection);    }    //将炮管指向对方当前位置    gunDirection = -gunDirection;    setTurnGunRight(99999*gunDirection);

    //射击    fire(1);

    //重新设置对方能量    previousEnergy = e.getEnergy();  }

  是不是很简单?这个技巧还存在问题。子弹一发射,我的Bot就移动,所以它最终可能会移回炮弹轨迹之内。最好是在估计子弹要到达时再移动。

  我有个更大胆的假设:因为现在我的Bot命中率还不高,那么如果我的Bot一直不开火,只是躲避对方的子弹的话,能不能拖到对方的能量为0呢?


<

您可能感兴趣的文章:
《Perl编程24学时教程》笔记第24课 建立交互式Web站点
Jquery 基础学习笔记
Golang中对interface{}做type assertion和type switch学习笔记
Jquery 学习笔记(一)
疯狂Jquery第一天(Jquery学习笔记)
golang匿名函数和闭包学习笔记
那些年,我还在学习jquery 学习笔记
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
jquery学习笔记二 实现可编辑的表格
《Perl编程24学时教程》笔记第19课 perl的复杂窗体

[关闭]