- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
HUNAN UNIVERSITY
项 目 报 告
科目: 坦克机器人编程
院系: 信息科学与工程学院
专业: 计算机科学与技术
学号: 20110801319
姓名: 廖彬彬
2013年 12月23日
1.Robocode简介:
Robocode 是一位IBM的工程师 Mat Nelson 用Java 语言所创造的机器人战斗仿真引擎。Robocode不是一个完整游戏,它是个半成品,一个专为程序员们准备的游戏。它使得你不用不面对一些无聊琐碎但又不得不做的工作,编写界面、处理图像、处理音频。而是用一种更简单的办法,让我们享受游戏开发的乐趣。 Robocode 它为你处理好一切细节。你所做就是为你的机器人坦克编写智能程序,让它能够移动、进攻、防御、躲避、开火。而它的对手就是跟你一样其他程序员编写机器人程序。
这就是Robocode魅力所在,最简单,只用几十行代码,就能立刻创造出一个简单但完整机器人。你可以不停的修改你的程序,设计新射击模型、躲避模型、移动模型,还可以在网上下载由其他程序员编写的水平更高的机器人,与它们比试一下,看看自己的水平到底如何。
从2001年7 月诞生之日算起,Robocode发展到如今,已经吸引了全世界无数爱好者参与其中。不仅出现了许多交流Robocode 技术的网站,也有各种规模不等的Robocode 大赛在各地进行。还等什么,赶快进入Robocode 这个有趣的世界。
准备知识
Robocode坐标系统
坐标系:Robocode整个坐标系都是战场屏幕以左下角为原点。
绝对方向系:Robocode中不管机器人在哪个方向都是以静态战场屏幕为参照物的绝对角度(Heading),正上方为0 度角。即是向北为0,向东为90,向南为180,向西为270。
相对方向系:相对方向是以机器人的动态heading角度为参照物的角度差,不再以整个静态屏幕为参照了。叫它相对是因为机器人的heading 是随着机器人移动而不停的在改变,heading 只是个相对物体。
Heading:是机器人方向与屏幕正上方的角度差,方向在0 到360 之间。
Bearing:是机器人的某个部件如雷达发现的目标与方向的角度差,顺时针为正角度在-180 到180 之间。
2.1坦克结构
机器人的结构包含三个部分:Body 车身,Gun 炮,Radar雷达。如图所示:
车身:
是一个比较笨重的部分, 负责移动,它的基本操作有:turnLeft(double degree)和turnRight(double degree)分别是使机器人(左右)转过一个指定的角度。
ahead(double distance)和back(double distance) )分别是使机器人(前后)移动指定的像素点距离,;这两个方法在机器人碰到墙或碰到另外一个机器人时即告完成。
炮:
是用来发射炮弹攻击敌人的武器,它的基本操作有:turnGunLeft(double degree) 和turnGunRight(doubledegree)分别是使炮可以独立于坦克车的方向(左右)转动指定的角度。fire(double power)发射指定能量的炮弹,能量范围是(0.1- 3)。
雷达:
是机器人取得敌人信息的主要器官,它的基本操作有:
turnRadarLeft(double degree)和turnRadarRight(double degree)分别是使炮上面的雷达(左右)转动指定的角度,转
动的方向也独立于炮的方向(以及坦克车的方向)。
2.2.坦克位置操作
运动:
默认情况下三个部分的运动是相对锁住的,要使他们能独立运动,Robocode 提供了三个方法来解锁:
setAdjustGunForRobotTurn(boolean flag):如果flag被设置成true,那么坦克车转动时,炮保持原来的方向。
setAdjustRadarForRobotTurn(boolean flag):如果flag被设置成true,那么坦克车(和炮)转动时,雷达会保持原来的方向。
setAdjustRadarForGunTurn(boolean flag):如果flag 被设置成true,那么炮转动时,雷达会保持原来的方向。而且,它执行的动作如同调用了setAdjustRadarForRobotTurn(true)。
获取位置信息
getX()和getY():可以捕捉到机器人当前所在战场中的坐标。
getHeading()、getGunHeading()和getRadarHeading():分别可以得出坦克车、炮或雷达当前的方向,该方向是以角度表示的。
getBattleFieldWidth()和getBattleField
文档评论(0)