Robocode高手的秘诀 - 因数避墙法(factored wall avoidance) - 编程入门网
Robocode高手的秘诀 - 因数避墙法(factored wall avoidance)时间:2010-11-29 IBM David McCoy我们只要对在 Tracking your opponents'' movement中做的机器人加以补充 ,就能将因数避墙法添加到现有的或讨厌的移动算法中。这种方法将预想的方向 和根据机器人和墙之间距离远近确定的安全方向作为因数试图找到最可能的方向 。 添加做常见数学计算的辅助方法 我们先要给机器人添加常见数学算法使用的一些辅助方法。 calculateBearingToXYRadians() 方法使用 java.lang.Math 中的 atan2() 方法来计算从 sourceX,sourceY 到 targetX,targetY 的绝对方位,然后再把这 个值转化为相对于 sourceHeading 的相对方位。 我们还需要 normalizeAbsoluteAngleRadians() 方法和 normalizeRelativeAngleRadians() 方法。 清单 1. 数学辅助方法
Robocode高手的秘诀 - 因数避墙法(factored wall avoidance)(2)时间:2010-11-29 IBM David McCoy使 AdvancedRobot 扩展到有倒行功能 接着,为了以相反方向导航,我们需要用一些辅助方法把 AdvancedRobot 类 的功能扩展到允许倒行操作: getRelativeHeading() 方法将应付正确计算相对于机器人当前的方向的相对 方向产生的额外开销。 reverseDirection() 非常简单。它负责 direction 实例变量的开关和使机 器人掉头。请注意,由于减速需要时间,依据机器人的速度,在掉过头来之前最 多会沿原来的方向再走 4 格。 setAhead() 和 setBack() 方法将覆盖 AdvancedRobot 类中的同名方法。这 两个方法会设置机器人对于目前方向的相对速度,必要的时候,还会调整 direction 实例变量。我们这么做的目的是要确保相对操作都与机器人当前的移 动方向有关。 setTurnLeftRadiansOptimal() 和 setTurnRightRadiansOptimal() 方法使 机器人的方向转过的角度超过 (Math.PI / 2) 。您会希望这个方法和 adjustHeadingForWalls 方法(我们将在后面讨论)一起使用。 注:我没有使用 getter 和 setter 方法,而是直接存取 direction 实例变 量。尽管通常这并非良好的编程习惯,但为了加快数据存取,在我的机器人代码 中我一直都是直接存取的。 清单 2. 机器人辅助方法
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |