Robocode优化设计及性能提高.ppt_第1页
Robocode优化设计及性能提高.ppt_第2页
Robocode优化设计及性能提高.ppt_第3页
Robocode优化设计及性能提高.ppt_第4页
Robocode优化设计及性能提高.ppt_第5页
免费预览已结束,剩余26页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

robocode优化设计及性能提高 坦克在屏幕上自由移动,有的是规则运动 ,有的是不规则运动,那么它们是怎么定 位的呢?怎样知道自己的、敌方的位置呢 ? 要回答这些问题,首先要理解这个平台的 坐标概念及其方向分布 首先让我们先来了解一下它的坐标表示方 法 robocode基本原理之坐标锁定 robocode平台坐标分布如下图 总的来说有下面几点需要注意: 所有的坐标都为正 坐标原点(0,0)在屏幕的左下角 x的右边为正 y的上面为正 其中,坐标值可以用函数:getx()或gety()得 到, robocode基本原理之方向剖析 必须知道的两个概念: heading:是机器人方向与屏幕正上方的角度 差,方向在0到360之间。 bearing:是机器人的某个部件(如雷达) 发现的目标与自己的方向的角度差,顺时 针为正,角度在-180到180之间。即: bearing = |heading - radarheading|。 需要注意的是:heading 是静态角度,屏幕正 上方永远是零;而bearing是相对角度差。 robocode机器人运动方式分析 robocode发展到目前为止,有如下几种较 常用的运动方式: 明显有规律的主动运动; 随机性很强的主动运动; 对瞄准有干扰性的主动运动; 依据对方发弹或者运动而采取的被动运动 ; 明显有规律的主动运动 sample中的“wall”就是一种很典型的明显有规 律的主动运动!它总是沿着墙壁走。这种 方法的优势在于它总是在动,如果没有经 过瞄准计算的机器人是很难打到它的。 这种类型的运动方式还有圆周运动、静止 、来回运动等。 这种运动要是遇到有提前瞄准的机器人就 输定了。(其中来回运动除外) 圆周运动的代码实现如下: whil(true) setturnright(10000);/一直旋转 ahead(10000);/一直往前走 来回运动又可以分为等距离来回运动、随机距 离来回运动。 随机距离面向敌人的来回运动实现代码如下: if (gettime()%20 = 0)/每20个时间周期一次 direction *= -1; /反转方向 setahead(direction *100); setturnrightradians(enemy.bearingradian + (math.pi/2); /每一时间周期以敌人为中心绕 圆运动 随机性很强的主动运动 sample中的crazy就是这种类型的典型代表 。它不停的做圆弧运动,这段弧线运动停 止后又会开始另一个方向的弧线运动,还 会突然改变方向。即通常所说的随机运动 。它具有不确定的方向和路径,具有不可 预测性。 另外一种不完全随机的随机运动就是直线 随机距离来回运动,这是结合了随机运动 和来回运动,躲避子弹的能力更强。 随机运动主要思想就是机器自动生成一个目标地 址,然后让机器人朝着这个方向运动。 其代码实现如下: double nextx,nexty; nextx = math.random()*getbattlefieldwidth(); nexty = math.random() * getbattlefieldheight(); double turnangle = enemy.getangle( nowx, nowy, nextx, nexty ); turnangle = enemy.normalizebearing( turnangle - getheadingradians() ); double movedistance = point2d.distance( nowx, nowy, nextx, nexty ); double movedirection = 1; if( math.abs( turnangle ) math.pi/2) turnangle = enemy.normalizebearing( turnangle + math.pi ); movedirection = -1; setturnrightradians( turnangle ); setahead( movedirection * movedistance ); 对瞄准有干扰性的主动运动 这是以一种很明显的规律运动,等敌人误 认为我是那种方式运动后立刻改变为另一 种规律,然后等敌人意识到现在的运动规 律后我又改变为原来那种。这中运动规律 很难被敌方掌握,所以被命中的概率也很 小,正因为如此,探讨怎样对付这种运动 才成了更加有趣的活动。而我们要做的就 是想出办法来对付这种运动。 依据对方发弹或者运动而采取的被 动运动 这类运动是在敌人发弹后才开始运动,它 根据敌方能量的变化判断是否发射了子弹 ,并会采用自己的分析策略自动分析生成 一个enemybullet对象记录子弹的运动,当 子弹对自己有危险的时候就分析哪个方向 没有危险就往哪个方向运动,这样如果它 分析并生成的enemybullet和真正的敌人的 子弹运动方向一致,那么它几乎将永远不 会被击中,但这不可能总是一致! dobule preenergy = 100; double changeenergy = preenergy e.getenergy(); if( changeenergy 0 setahead(e.getdistance()/4+25)*movementd irection); 其他要注意的就是: 怎样保存敌方机器人的信息、 子弹的能量的控制(bulletpower)、 离敌人的远近控制(getdistance)、 撞到其他机器人的时候该怎么做、 被子弹击中又要怎么做等。 这些当中,最好用的是math.random(),最可 怕的也是math.random()! 大家

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论