理解Robocode的规则系统,你才能写出更好的坦克。许多规则在Robotcode的Roles类中进行了描述。为了便于大家理解,本文对各种规则参数进行详细叙述。

时间

robocode的时间单位为”轮”(turn)。因此,在描述移动速度时,单位为”像素每轮”(pixels/turn)。“轮”是独立于真实时间的抽象时间单位。游戏速度越快,单位时间内执行的轮数就越多。

在Robocode提供的类中,许多类都提供了getTime()方法。该方法返回从该局开始到现在或事件发生时的轮数。如在我们自己写的坦克类中,我们可以通过this.getTime()取得代码执行到该行时的时间。又如,在雷达扫描到目标事件发生时,会调用方法:

onScannedRobot(ScannedRobotEvent event)

该方法的参数event代表了扫描到目标事件。因此我们可以使用event.getTime()获得事件发生的时间。

移动速度和加速度

在robocode中,坦克不会是匀速移动的!因为在robocode中,有加速度的概念。总的来说,坦克的移动速度介于0-8之间。robocode会自动管理速度。例如:坦克从一点移动到另一点的过程一般是:  开始移动-加速-减速-停止。我们可以通过Robot.getVelocity()方法取得坦克当前移动速度。

除了坦克有移动速度外,子弹也有移动速度,只不过子弹的移动速度是匀速的。在Robot类中,有两个用于射击的方法:

void fire(double power) //以指定的能量开火

Bullet fireBullet(double power)  //以制定的能量开火,并返回子弹对象

这里要说的是,开火时的能量越高,子弹移动速度越快。Robocode API中提供了一个Rules类,这里面包含了许多常量以及一些静态方法。 我们可以使用Rules.getBulletSpeed(double bulletPower)根据能量计算子弹速度。

方向及转向

Robocode中,”朝向”是一个绝对概念,就像我们现实生活中的“东南西北一样”。在Robot类中,提供了获得Body、Gun、Radar朝向的方法:

getHeading() //取得Body朝向

getGunHeading() //取得Gun朝向

getRadarheading() //取得Radar朝向

在本系类的第一节我们就介绍了坦克的转向方法,现将与转向相关的API截图如下:

如果你想做一个“见着就打”的坦克,实际上再简单不过:

首先,在run方法的循环中,只写一行语句: turnGunLeft(20), 这样你的坦克就会不停地旋转炮塔,而雷达会随着炮塔的旋转一同旋转,一旦目标处于雷达正前方,onScannedRobot方法会被触发。在onScannedRobot方法中,你只需要this.fire(1) 就可以了。不过,这样的坦克在战场上生存能力是很有限的,因为:

1. 该坦克不移动,会成为“活靶子”

2. 该坦克无法命中移动目标,除非瞎猫碰着死耗子

对于车身来说,转向的速度不总是相同的,这跟坦克当前速度有关,速度越快,转向越慢(跟我们开车一样,当过弯的时候,需要减速)。车身的转向速度最快为10度/turn。

对于炮塔和雷达,转向速度是固定的,分别为:20度/turn 和 45度/turn。

能量、生命、GunHeat

在我玩的这个Robocode版本中,已经废除了生命的概念。此版本的规则是: 开炮和被对手击中需要耗费能量,击中对手会获得能量,当能量耗尽时,坦克就死了。

开炮的能量为0-3之间的double值。开炮能量越大,GunHeat越大,GunHeat需要一段时间才能冷却,冷却后,我们才能再次开炮。因此,开炮的能量越大,开炮的威力越大,开炮间隔越长。反之亦然。

下面列出一些规则公式:

  • 每次击中回复能量: 3*firepower
  • 火炮过热(gunHeat) : 1 + firepower/5 ;
  • 如果火炮过热(gunHeat>0)则不能开炮。
  • 在游戏开始时所有的坦克都是过热的。
  • 给对手造成伤害: 4*firepower
  • 附加伤害: 如果firepower>1 ,附加伤害=2*(power-1)
  • 能量补充: 当你击中对手,你会获得3 * power能量补充

碰撞

碰撞到别的坦克,或者碰撞到边界,都会使自己的速度立减为零,而且会有不同程度的伤害。

碰撞: 双方0.6伤害.
撞墙: 1.2伤害

教你玩Robocode(4)——规则系统相关推荐

  1. 手把手教你玩转OpenWRT路由器系统,视频教程合集

    手把手教你玩转OpenWRT路由器系统,视频教程合集 以NewifiD2(新三)路由器为基础,录制了OpenWRT系列视频教程,欢迎观看. <[视频教程]手把手教你用虚拟机安装ubuntu操作系 ...

  2. 教你玩Robocode(1)

    最近在上网时发现了一个叫做Robocode的游戏.最近我已经对它上瘾了.Robocode官方网站上对Robocode的介绍: Robocode is a programming game, where ...

  3. 教你玩Robocode(5)——调试技巧

    我们可以使用三种方式调试Robocode: 1. 通过输出监视程序 这是最简单高效的调试方法,在你的代码中加入System.out.println(-)或System.error.println(-) ...

  4. 教你玩 Robocode(2) —— 使用Eclipse开发Robot

    上篇文章对Robocode进行了简单的介绍.本文主要介绍如何使用Eclipse开发Robot. 主要步骤如下: 1. 在Eclipse中,创建一个Java项目. 2. 把Robocode库添加到bui ...

  5. 群辉服务器更新系统教程,男人的生产力工具 篇二百四十六:新手玩转群晖NAS:一步一步教你更新群晖DSM系统...

    男人的生产力工具 篇二百四十六:新手玩转群晖NAS:一步一步教你更新群晖DSM系统 2020-08-05 10:46:03 18点赞 175收藏 59评论 新手与新知男人的生产力工具 篇二百三十九:新 ...

  6. root lg android tv,首款Android 7.0手机LG V20发布,KingRoot教你玩转新系统

    原标题:首款Android 7.0手机LG V20发布,KingRoot教你玩转新系统 通信世界网消息(CWW)9月7日,韩国手机品牌LG在美国旧金山正式发布了全新安卓旗舰机型LG V20,虽然之前曝 ...

  7. 教你玩转九四玩手游联运系统

    手游联运系统简介 简单来说,手游联运系统就像是一个软件系统,根据软件系统内部或后台的功能,可以轻松实现手游运营平台的搭建.从接入游戏.活动运营.宣传推广再到用户充值等等,都可以根据自己喜好来搭建.手游 ...

  8. Shopify成功案例,手把手教你玩转独立站

    Shopify成功案例,手把手教你玩转独立站 COVID-19的大流行对全球经济产生了较大的冲击,电子商务行业也不能幸免.我们的Shopify商店如何在这场全球灾难中生存?也许你可以在这些成功的Sho ...

  9. 人人皆可大数据!SACC教你玩转阿里ODPS

     人人皆可大数据!SACC教你玩转阿里ODPS [IT168 专稿]为什么我们使用搜索引擎时,不同的用户搜索同样的关键词看到的广告却不同?为什么我们到电子商务网站购物时,每次浏览同样的商品时都可以 ...

最新文章

  1. ES权威指南[官方文档学习笔记]-57 Analysis and analyzers
  2. oracle数据库怎么导出dat文件_论将数据从数据库导出为dat格式.docx
  3. 从零学javascript_我刚刚问了23,000个开发人员他们对JavaScript的看法。 这是我学到的。...
  4. 自己做的一个小demo
  5. 某公司防火墙配置-2
  6. Remote Desktop Connection for mac 报错:证书或相关链无效
  7. 让网站支持RSS订阅
  8. iOS下载历史版本App教程
  9. php怎么画五星红旗,PHP_php基于GD库画五星红旗的方法,本文实例讲述了php基于GD库画 - phpStudy...
  10. MYSQL、JDBC
  11. 解决树莓派程序中的中文乱码问题
  12. Visual Studio 2008 下载地址 V9各种版本官方下载网址
  13. JOOQ学习笔记:分页、排序、字段重命名的写法
  14. 基于Linux的UART驱动框架源码分析笔记
  15. 基于GEE(Google earth engine)的 GIMMS NDVI月合成
  16. 【c++】模板类继承模板类
  17. 精雕软件怎么把图片转成灰度图_怎么把普通的照片变成浮雕用的灰度图 精雕图 灰度图 浮雕图之间怎么能联系起来使用...
  18. 突发!Facebook一员工在公司总部跳楼身亡,传是程序员;微软开源新字体Cascadia Code;华为下一个研究前沿是AI...
  19. MySQL监控,MySQL数据库监控软件简介
  20. 文件压缩解压缩,文件查找

热门文章

  1. c语言1017错误什么意思,错误 C1017
  2. PTA新生训练赛----3
  3. 苹果手机html吊起拍照,苹果手机照相技巧
  4. 光谷 计算机专业 好的学校,距离光谷最近的十所高校,你的学校上榜了没?
  5. 各种风格简洁单页响应式html5模板_简洁 响应式 单页 跳转 设计 案例 源码340多套订餐企业模板高大尚响应式网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响
  6. A*寻路算法讲解+源码DEMO演示
  7. 【判断题】【简答题】【数据库原理】
  8. 刘文文:603001操盘手坐庄内幕(转)
  9. 中国广告公司恶意感染8500万台手机:月赚200万
  10. 山东理工大学ACM平台题答案关于C语言 2101 正方形面积