您当前位置: 圣才学习网首页 >> IT类 >> Java程序设计

Robocode坐标锁定的实现(2)

扫码手机阅读
用圣才电子书APP或微信扫一扫,在手机上阅读本文,也可分享给你的朋友。
评论(0
   
来源:网络 作者:未知
 
  动静机器人测试法
 
  好了,我们知道了Robocode整个坐标系统,一切问题都好办了。先让我们进行一些有趣的实验。我们仍以动静机器人的方法进行测试。这是个测试机器人方向,坐标参数的很好办法。见下说明:
 
  设计两个机器人,任意取名为GenyGenyTrackGeny是个静止的机器人,它主要任务是打印自己的当前坐标,用来验证GenyTrack追踪它的位置是否正确。 GenyTrack顾名思义,它就是我们要研究的追踪目标机器人了。它在此负责锁定 Geny的坐标,距离并打印出探测到的Geny机器人的XY坐标及距离,此处使用了 Java.lang类库中的Math.round方法,四舍五入得到的double类型的数据,方便对比。最后用表格对比,以此来验证我们使用方法的正确性。
 
  当然还有很多有趣的测试方法来等待着你的验证。如测速度,加速度时我们就可用龟兔赛跑的方法;测炮管,雷达坦克车旋转相互影响度可用离心重的方法。相信从测试方法的名字聪明的你们就知道他的用法了。
 
  在我们开始前,Skyala.Li建议你们下载源码( resource)先看看GenyTrack表演。当然你也可参考文章内附加的辅助说明Robocode坐标系统的代码。
 
  Geny:
 
  package test;
 
  import robocode.*;
 
  public class Geny extends AdvancedRobot
 
  {
 
  public void run ()
 
  {
 
  while (true)
 
  {
 
  // round 对get到的数据进行四舍五入处理
 
  out.println("x:"+Math.round(getX()));
 
  out.println("y:"+Math.round(getY()));
 
  }
 
  }
 
  }
 
  GenyTrack:
 
  package test;
 
  import robocode.*;
 
  public class GenyTrack extends AdvancedRobot
 
  {
 
  public void run ()
 
  {
 
  while (true)
 
  {
 
  turnRadarRight(400);
 
  }
 
  }
 
  public void onScannedRobot(ScannedRobotEvent e)
 
  {
 
  double bearing = (getHeading() + e.getBearing()) %  360;
 
  double distance = e.getDistance();
 
  bearing = Math.toRadians(bearing);
 
  double genyX = getX() + Math.sin(bearing) *  distance;
 
  double genyY = getY() + Math.cos(bearing) *  distance;
 
  out.println("genyX:"+ Math.round(genyX));
 
  out.println("genyY:"+ Math.round(genyY));
 
  }
 
  }
 
  注意这两个机器人我们都使用了AdvancedRobot的类,这可是高级机器人的说明了。有关高级机器人大家可以查找Robocode API的说明,也可看看Sing Li "Rock 'em sock 'em Robocode: Round 2".
 
相关阅读
 
 

小编工资已与此挂钩!一一分钱!求打赏↓ ↓ ↓

如果你喜欢本文章,请赐赏:

已赐赏的人
最新评论(共0条)评论一句