快速业务通道

Robocode基本原理之方向剖析 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

Robocode基本原理之方向剖析

时间:2010-11-29 IBM Skyala.Li

很多研究Robocode的 玩家都被其中的方向及坐标弄糊涂了。下面就跟着 Skyala.Li一起来揭开其中的奥妙。

前言:

很多研究Robocode的 玩家都被其中的方向及坐标弄糊涂了。下面就跟着 Skyala.Li一起来揭开其中的奥妙。

首先我们来看看一段英文的翻译及说明:

heading - absolute angle in degrees with 0 facing up the screen, positive clockwise. 0 <= heading < 360.

bearing - relative angle to some object from your robot''s heading, positive clockwise. -180 < bearing <= 180

heading:是机器人方向与屏幕正上方的角度差,方向在0到360之间.

bearing:是机器人的某个部件如雷达发现的目标与方向的角度差,顺时针为 正角度在-180到180之间

看了这段文字大家可能还是不太明白,整个屏幕哪个是0度角,整个是坐标原 点呢? 顺时针与逆时针的方向如何区分?

概念与平面图:

在开始说明之前大家先得清楚几个在Robocode中很重要的概念:

坐标系:Robocode整个坐标系都是战场屏幕以左下角为原点

绝对方向系:Robocode中不管机器人在哪个方向都是以静态战场屏幕为参照 的绝对角度(也即大家说的Heading),正上方为0度角。也即不管是 Robot,Gun,Radar向北为0,向东为90,向南为180,向西为270。

相对方向系:相对方向是Robot,Gun,Radar以机器人的动态heading角度为参 照的角度差不再以整个静态屏幕为参照了,叫它相对因为机器人的heading是随 着机器人移动而不停的在改变,heaing只是个相对物体。

下图很清楚的说明了坐标系统及绝对方向

Robocode基本原理之方向剖析(2)

时间:2010-11-29 IBM Skyala.Li

哦似乎明白了一些,可头脑中还有一些不是很清楚。我们来做个测试。测试 方法很简单,写两个机器人,一个什么一动不动坐在原点扫扫Gun并打印出自己的 Heading我们叫它Geny;另一个也不移动,只是Gun进行缓慢的转动同时打印出自 己的Heading,Bearing,和Radar的 Heading,我们叫它GenyTrack1. (注:此处的 数据是double类型,没有进行转化我们近似的认识它为整数,具体的转化方法和 更好测试方法我们会在以后的文章中给出):

代码如下Geny.java

//Geny.java package wind; import robocode.*; import java.io.*; public class Geny extends Robot {      public void run() {         ahead(100);         System.out.println("Heading "+getHeading());         while(true) {             turnGunRight(360);         } } }

GenyTrack1.java

//GenyTrack1.java package wind; import robocode.*; public class GenyTrack1 extends Robot {      public void run () {      while (true)      {         turnGunRight(5);      }      }      public void onScannedRobot(ScannedRobotEvent e)      {         System.out.println("getBearing "+e.getBearing ());         System.out.println("heading "+getHeading());         System.out.println("getRadarHeading()  "+getRadarHeading());         turnGunRight(e.getBearing());         fire(3);      } }

Robocode基本原理之方向剖析(3)

时间:2010-11-29 IBM Skyala.Li

要想了解机器人的各个部件及说明请看文章:Robocode机器人解剖图

绝对方向系Heading:

下面是剪切到的Geny和GenyTrack1在不同位置得到的数据图.

图一

图一解:大家观察机器人GenyTrac

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号