robocode系统实训项目实施方案

上传人:xzh****18 文档编号:34254038 上传时间:2018-02-22 格式:DOC 页数:7 大小:83.50KB
返回 下载 相关 举报
robocode系统实训项目实施方案_第1页
第1页 / 共7页
robocode系统实训项目实施方案_第2页
第2页 / 共7页
robocode系统实训项目实施方案_第3页
第3页 / 共7页
robocode系统实训项目实施方案_第4页
第4页 / 共7页
robocode系统实训项目实施方案_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《robocode系统实训项目实施方案》由会员分享,可在线阅读,更多相关《robocode系统实训项目实施方案(7页珍藏版)》请在金锄头文库上搜索。

1、Robocode 系统实训项目实施方案一、项目 Robocode 简介Robocode 是一位 IBM 的工程师 Mat Nelson 用 Java 语言所创造的机器人战斗仿真引擎。Robocode 不是一个完整游戏,它是个半成品,你所做的就是为你的机器人坦克编写智能程序,让它能够移动、进攻、防御、躲避、开火。只用几十行代码,就能立刻创造出一个简单但完整机器人,你可以立即将它装入Robocode 引擎中,再从 Robocode 自带的那些水平不一的示例机器人中选取一个进行一番对战,还可以在网上下载由其他程序员编写的水平更高的机器人,与它们比试一下,看看自己的水平到底如何。 开发 Robocod

2、e,也是一个极佳的学习 Java 语言的过程。随着你的机器人的“智力”水平的提高,你的编程能力也就跟着水涨船高了。 二、项目目标通过 Robocode 系统的开发,要求学生:1、 进一步熟练 java 面向对象编程方法的设计与实现;2、 如何编写 Java 代码,如何处理 Java 中的事件,如何创建内部类;3、 全面实践软件工程项目,总结系统开发的基本方法与步骤;并就开发过程中遇到的问题以及解决的方法进行总结与归纳。三、具体实施通常玩的游戏不同的是:参赛者必须利用对机器人进行编程,给机器人设计智能来自动指挥它,而不是由键盘、鼠标简单地直接控制。Robocode 是一种有趣的竞赛性编程,使用几

3、行简单的代码,就能够让你创建一个活生生的机器人,一个真正的在屏幕上与其他机器人互相对抗的机器人。你可以看到它在屏幕上四处疾驰,碾碎一切挡道的东西。机器人配有雷达与火炮,选手在躲避对手进攻的同时攻击对手,以此来较量得分的多少。Robocode 可以让你在娱乐的同时学习与提高 Java 技术。1、游戏安装Robocode 项目已经成为开源项目,Robocode 可以 在 Robocode 首页下载 首页:http:/ (本项目教师已经下载完毕)提取自中国 Robocode 第一人,Wave 技术的创始人 iiley 所写的 Cigaret 机器人中。http:/www.robochina.org,

4、进入了解 Robocode。http:/ 下载 Robocode在安装过程中,Robocode 将问您是否要使用这个外部的 Java VM 来编译机器人。您也可以选择使用作为 Robocode 分发包一部分而提供的 Jikes 编译器。2、游戏界面与基本角色当激活 Robocode 时,将看到两个相关的 GUI 窗口,这两个窗口构成了 Robocode 的 IDE:* 战场* Robot Editor战场是机器人之间进行战斗直至分出胜负的场地。主要的仿真引擎被置于其中,并且允许在这里创建战斗、保存战斗以及打开新建的或现有的战斗。通过界面区域内的控件,可以暂停或继续战斗、终止战斗、消灭任何机器人

5、个体或获取任何机器人的统计数据。此外,可以在此屏幕上激活 Robot Editor。Robot Editor 是一个定制的文本编辑器,它可以用于编辑生成机器人的 Java 源文件。在它的菜单里集成了 Java 编译器(用于编译机器人代码)以及定制的 Robot 打包器。由 Robot Editor 创建并成功编译的所有机器人都会处于战场上一个部署就绪的位置。(高手认为它所提供的文本编辑器不怎么好,最后还是用 jb 来编辑,只要在 Requird Libraries 加入解压缩后的 robocode.jar 就可以了)Robocode 里的每个机器人都由一个或多个 Java 类构成。这些类可以被

6、压缩成一个 JAR 包。为此,Robocode 的最新版本提供了一个可以在战场 GUI 窗口中激活的“Robot Packager”。图 2. 对 Robocode 机器人的详细分析Robocode 机器人是一个图形化的坦克,请注意,机器人有一门可以旋转的炮,炮上面的雷达也是可以旋转的。机器人坦克车(Vehicle)、炮(Gun)以及雷达(Radar)都可以单独旋转,也就是说,在任何时刻,机器人坦克车、炮以及雷达都可以转向不同的方向。缺省情况下,这些方向是一致的,都指向坦克车运动的方向。3、平台参数方向 - 整个战场是以屏幕正上角为 0 度,按顺时针排列,90,180,270.。 位置 - 整

7、个战场的坐标是以屏幕左下角为原点,高为 Y 坐标,宽为 X 坐标。 距离 - 游戏中规定的距离是以像素(Pixels)点为单位,如果你把屏幕缩小了,那就是以缩小后的像素点为单位,反之就是放大后的像素点为单位。 时间 - 游戏中规定的时间是以帧(frame)或滴答(ticks)(有点像时钟滴答),或时间周期(turns),或单独的时间片(simply timeslices)为单位。 回合 比赛回合是比赛中由用户自己设置的比赛次数,默认值为 10。 帧速 - 默认为 30。 扫描 - 默认为无。 声音 - 默认为无。 4、游戏规则: (1 )生命规则: 相撞损失:撞到墙时,生命点损伤度=Math.

8、abs (velocity) * 0.5 -1。撞到另一个坦克时,移动停止,生命点损失 6 点,扣除积分 1.2 分。 击中损失:当子弹能量为 1 时,我们生命点损失=4 * power,如果子弹能量大于 1,那么我们的生命损失+= 2 * (power-1)。 发射损失:如果我们的子弹打中别的坦克,我们可以从子弹那窃取到3*power 的能量。 (2 )炮弹规则: 子弹能量:子弹能量是通过函数 getPower()得到的。它大于等于 0.1,小于等于 3。子弹速度:每一颗子弹有着自身的速度,这在处理敌人向你开炮前的移动策略可是很有帮助的。子弹的速度也和它的能量有关: speed = 20 -

9、 3 * power。由于能量范围在 0.1 到 3 之间我们可求得子弹的速度范围:11 = bullet speed = 19.7。 (3 )炮管规则: 旋转速率:炮管在每一个时间周期内旋转速率=20 度/帧(frame) 炮管热量:当我们开火时,炮管产生的热量由子弹开火时的能量决定。即:热量=1+(firepower/5), 利用函数 getGunHeat()可以得到炮管当时的热量,只有当 getGunHeat 恒等于 0 时,我们才能再次发射子弹。 冷却度:有热度当然就有冷却度,不冷却我们的炮管会永远不会开火的。系统设定的默认冷却速度是 0.1/tick(时间周期),我们可通过函数 ge

10、tGunCoolingRate()得到这个参数值。 (4 )雷达规则: 旋转速度:雷达以每时间周期 45 度的速度旋转。也即 45 degrees/frame. 扫描面积: 雷达扫描是呈扇形的,它的开始位置到终止位置的长度大约为1200。只要我们放大屏幕可以通过眼睛估算出这个面积。 扫描排列:扫描到的数据有墙,目标,子弹等等。这些是按扫描距离来排列,从离雷达最近的物体开始到最后扫描到的物体。 (5 )运行规则: 前进速度:坦克最大的速度(Velocity)为 8,函数 getVelocity()返回了坦克当前的速度。 加/减速度:加速度为 1 像素(pixel)/帧 frame ,减速度为 2

11、 pixel/frame。 参考公式: 设 s 为距离,Vt 为终速度,Vo 为初速度,t 为时间,a 为加速度: 位移公式 sVo*ta*t*t/2 速度公式 Vt Vo a*t 平均速度公式 v(Vt Vo)/2s/t 加速度公式 a(Vt Vo)/t (这些公式高一大家都学过吧?) (6)旋转规则: 旋转速度:机器人的旋转速度和当前的速度有关即旋转速度=10 - 0.75 * getVelocity()。 相互作用参数:雷达安装在炮上,炮安装在机器人上,它们会相互影响。如果我们向左转动炮管,而使雷达向右转动,那么雷达只会向右转动(45-20) =25度;如果两者都向右转动,雷达将向右转(

12、45+20)=65 度。同样的道理炮和机器人也是方向同相加,方向反相减。 5、积分规则:Robot Name - 机器人的名字; Total Scroe - 为这次比赛你的总共得分 ; Survival - 是你存活率的得分; Last Survivor Bonus:你是赢的次数相对对手的分红得分; Bullet Dmg:是你的子弹损失得分也即发射的子弹数的得分 ; Bonus:是子弹数的分红得分 ; Ram Dmg *2 是你的撞击得分; Bonus:是你撞击得分分红 ; 最后两项 Survival 1sts,是你赢的次数,不算做分数。 所有分数加起来就是你的总分。记住在联赛并不是总分越高越

13、好,它是算综合平均分的。其中撞击分和子弹损失分就要越少越好。你如果观察两大高手比赛的记分牌,你会发现他们的 Ram Dmg 和 Ram Dmg 中的 Bonus 一般都为 0。 6、基本术语在细究 API 之前,让我们先来了解一些术语。机器人基本上是一些小型的坦克。这些坦克可以旋转,向前或向后移动。它们的顶部有一个用于射击的火炮。在火炮上面还有一个雷达系统,用于侦测其它机器人。机器人的底盘、火炮和雷达系统都可以独立运动,也可以相互“锁定” ,一起移动。换句话说,如果将雷达向下锁定,那么它将随火炮一起移动;如果火炮向下锁定,它将随机器人的底盘一起移动。下面是一些你在编写机器人之初用的最多的方法函

14、数:ahead(), back() 向前和向后移动fire() 开火setAdjustGunForRobotTurn() 控制火炮是否向下锁定setAdjustRadarForGunTurn() 控制雷达是否向下锁定 turnRight(), turnLeft() 实现机器人的旋转turnGunRight(), turnGunLeft() 旋转火炮turnRadarLeft(), turnRadarRight() - 旋转雷达反射镜4、 你所做的就是为你的机器人坦克编写智能程序,让它能够移动、进攻、防御、躲避、开火;四、 实训报告撰写实训报告,总结此系统开发的基本方法与步骤;并就开发过程中遇到的问题以及解决的方法进行总结与归纳。四、 考核方法与评分标准该项目采取过程考核和提交实训项目、实训报告的方式进行考核,项目所占实训成绩的总分数为 6 分,其中:1、系统功能的实现(3 分)2、程序的开发调试能力(3 分)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号