- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Robocode教程
1,坐标系统
2,扫描与锁定
3,运动方式
1,坐标与方向系统
坐标系:Robocode整个坐标系都是战场屏幕以左下角为原点
1绝对方向系:Robocode中不管机器人在哪个方向都是以静态战场屏幕为参照的绝对角度(也即大家说的Heading),正上方为0度角。也即不管Robot,Gun,Radar
向北为0,
向东为90,
向南为180,
向西为270。
heading角,即从Y轴出发,然后顺时针绕回Y轴的这么个角度区间,取值范围: [0,360]
2相对方向系:
相对方向是Robot,Gun,Radar以机器人的动态heading角度为参照的角度差不再以整个静态屏幕为参照了,叫它相对因为机器人的heading是随着机器人移动而不停的在改变,bearing只是个相对物体。
bearing 角,即从Y轴顺、逆时针出发,绕半圈回到Y轴所形成的两个角度区间,取值范围:顺时针[0,180) ;逆时针[0,-180]
例子target
2,雷达与锁定
雷达锁定
1,敌方坦克绝对角度
FBA=FBC+ABC
=e.getBearingRadians()+getHeadingRadians()
2,雷达调整角度FBE=FBC-ABE
=absEnemyBearing-getRadarHeadingRadians()
3,雷达修正:
setTurnRadarRight(FBE*2);
例子brawl
即自己与敌机的连线,与Y轴所成的bearing角,取值范围为[-180,180)。但是计算出来的公式有可能大于这个范围,因此进行绝对化操作:
absEnemyBearing=robocode.util.Utils.normalRelativeAngle(FBA)
坐标锁定
如何判断敌人的准确位置?
1,与敌方坦克的距离
2,与敌方坦克的角度
3,自己的坐标
1,与敌方坦克的距离
要得到目标坐标我们首先得知道我们和目标之间的距离。这里的距离探测很简单,只要运用 ScannedRobotEvent 事件中的 e.getDistance() 方法我们就可得到 与地方坦克的距离差了。
由于机器人存在着宽和高 , 可分别用 Robocode API 中的 getWidth() 和 getHeigth() 方法得到。而两个机器人的距离是以双方的中心点为终点。如图所示,L 才是它们的距离,A 的距离是错误的。
与敌方坦克的角度
与敌方角度=(getHeading() + e.getBearing()) % 360;
注意:getRadarHeadingRadians() 函数,当你调用此函数的时候实际上雷达已经不在刚刚扫描到敌人的那个角度了,他已经转过了十几度甚至更多。雷达默认转动速度是 45 度 /robocode 单位时间,实际上一般来说你用 getRadarHeadingRadians() 得到的值总是 45 度的整数倍。
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;
敌方坦克的位置
利用三角函数以及距离,角度和自己的坐标计算地方坦克的位置。注意java的Math.sin和cos使用的是弧度制。例子brawl和killer1000
3,运动方式
运动时注意:碰撞到别的坦克,或者碰撞到边界,都会使自己的速度立减为零,而且会有不同程度的伤害。
碰撞: 双方0.6伤害. 撞墙: 1.2伤害
如何避免撞墙:
double heading = getHeadingRadians(); //取得bot方向的弧度数
double x = getX() + moveStep*Math.sin(heading); //移动move后将要达到的x坐标
double y = getY() + moveStep*Math.cos(heading); //移动move后将要达到的y坐标
double dWidth = getBattleFieldWidth(); //战场的宽度
double dHeight = getBattleFieldHeight(); //战场的长度
//当(x,y)超过指定的范围,则反向移动move
if(x 30
您可能关注的文档
- h3cmsr系列路由器web配置手册-release1910p02(v1.03)-qos设置.pdf
- hec-ras自行练习说明.pdf
- h3cne整理自学使用教程.pdf
- hoppecke对放电的说明2.doc
- html自学使用教程全.ppt
- iar的使用自学使用教程.ppt
- html5完整自学使用教程.ppt
- html简介网页自学使用教程.pdf
- ic-m802海用单边带短波电台说明.pdf
- ie工程-工作设计与工作研究.pdf
- 内蒙古建筑图集 12J2 地下工程防水 DBJ03-22-2014.docx
- 山西省图集 12J5-2 12系列建筑标准设计图集 坡屋面.docx
- 内蒙古建筑图集 12S11 管道与设备保温、防结露及电伴热 DBJ03-22-2014.docx
- 内蒙古建筑图集 12J7-2 内装修-配件 DBJ03-22-2014.docx
- 内蒙古建筑图集 12D17 公共建筑能耗监测及管理系统 DBJ03-22-2014.docx
- 河南省图集 12YJ5-2 坡屋面.docx
- 山西省图集 12J3-3 12系列建筑标准设计图集 蒸压加气混凝土砌块墙.docx
- 河南省图集 13YTJ203 建筑防水构造(一) DBJT19-03-2012.docx
- 内蒙古建筑图集 12J5-2 坡屋面 DBJ03-22-2014.docx
- 内蒙古建筑图集 12N9-2 管道与设备绝热(保冷) DBJ03-22-2014.docx
最近下载
- 舟山市普陀区全民健身中心项目设计说明.doc
- 2023年山东女子学院计算机应用技术专业《数据结构与算法》科目期末试卷A(有答案).docx VIP
- 5215建筑财务与成本核算A.pdf VIP
- GB∕T 29315-2022 中小学、幼儿园安全防范要求.pdf
- 2023年广东广州中考数学真题(含答案).pdf VIP
- 符合《政府采购法》第22条规定的承诺书模板.docx VIP
- 常压下苯--甲苯的气液平衡数据.doc VIP
- 构建县域技术创新服务支撑体系浅探------以石狮市为例.pdf VIP
- 超星尔雅学习通《中国陶瓷鉴赏与器物陈设》章节测试答案.docx VIP
- 国家电网公司电力安全工作规程第5部分:风电场.pdf
文档评论(0)