知识大全 躲避子弹

Posted 机器人

篇首语:不怕读得少,只怕记不牢。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 躲避子弹相关的知识,希望对你有一定的参考价值。

Robocode 高手的秘诀:躲避子弹  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在我向您展示这一技巧之前 您必须了解 Robocode 的一些基础知识 首先 它攻击和防守使用的是一个能量仓 这就带来了有趣的博弈决定 您必须决定何时使用能量向对手开炮 何时保存能量以应付可能的损失     其次 机器人对于周围环境的了解非常有限 它可以知道其它机器人的距离 方位 方向 速度和能量等级 但是 它看不到子弹 不过也许根据这些线索 您可以猜想如何发现其它机器人正向它开炮     DodgeBot 静止不动 不断的跟踪对手的前一能量等级 当它的能量下降一定的量时 DodgeBot 就认为它开炮了 并移向左边或右边 令人吃惊的是 这将会迷惑大多数机器人的瞄准方法 它们要么直接向目标开炮 要么试着根据您的速度和方向来推算位置 如果您的机器人不移动 两种算法都会正好冲著这个机器人开炮 而您的机器人猜到了这一点 向旁边跃出一小步 但子弹仍是沿原来的方向 图 展示了实际的 DodgeBot      >   >    清单 展示了 DodgeBot 的代码 每当雷达觉察到敌人时执行主代码部分 DodgeBot 保持自己的直角状态 另外还有 度倾向对手 以 度角静止使机器人避开子弹的能力达到最大 附加的 度倾斜使机器人具有一定的攻击力 并逐渐接近目标 接着是代码的关键部分 如果机器人觉察到能量下降介于 和 之间(火力范围) 那么机器人就立即切换方向 向左或向右移动 很简单 它会切换炮和雷达扫描的方向 假定如果它在最后一次扫描中看到了一个机器人 那么当它再次扫过同一区域时还会再发现它 这时机器人就会开炮 因为我把炮和雷达联系在一起 而扫描器是在它面朝对手的那一刻被调用的 所以炮会正对着对手开炮 最后 我会为下一回合记下对手的能量     清单 DodgeBot 的代码  import robocode *;    public class DodgeBot extends AdvancedRobot  double previousEnergy = ;  int movementDirection = ;  int gunDirection = ;  public void run()   setTurnGunRight( );    public void onScannedRobot(  ScannedRobotEvent e)   // Stay at right angles to the opponent  setTurnRight(e getBearing()+    *movementDirection);    // If the bot has small energy drop   // assume it fired  double changeInEnergy =  previousEnergy e getEnergy();  if (changeInEnergy> &&  changeInEnergy<= )   // Dodge!  movementDirection =   movementDirection;  setAhead((e getDistance()/ + )movementDirection);    // When a bot is spotted   // sweep the gun and radar  gunDirection = gunDirection;  setTurnGunRight( *gunDirection);    // Fire directly at target  f i r e ( ) ;    // Track the energy level  previousEnergy = e getEnergy();        我在叫做 Wolverine 的机器人上使用了这一技巧 它另外使用了一些感应器信息以使感觉更准确 当对手击中我的机器人时 对手得重新充能量 当我的机器人击中对手时 能量等级就会下降 机器人可能同时感受到这两件事情 所以 Wolverine 利用这一信息来抵消对等的能量波动     这个技巧还存在问题 子弹一发射 机器人就移动 所以它最终可能会移回炮弹轨迹之内 最好是在估计子弹要到达时再移动     更严重的问题是 即使您能够迷惑平常的瞄准 但实际上向旁边一步一步的移动很容易预测 使用这一技巧的最佳方式可能是让信息指导您的移动 而不是让它控制     您也许会想 这个技巧这么简单 您自己原本也是想得到的 不错 这个游戏就是这样玩的 这也正是它为什么如此吸引人的缘故 Robocode 就象棋类游戏 每新走一步都会是一个新的想法 cha138/Article/program/Java/JSP/201311/19413

相关参考