Robocode高手的秘诀

在我向您展示这一技巧之前,您必须了解 Robocode 的一些基础知识。首先 ,它攻击和防守使用的是一个能量仓。这就带来了有趣的博弈决定:您必须决定 何时使用能量向对手开炮,何时保存能量以应付可能的损失。

其次,机器人对于周围环境的了解非常有限。它可以知道其它机器人的距离 、方位、方向、速度和能量等级。但是,它看不到子弹,不过也许根据这些线索 ,您可以猜想如何发现其它机器人正向它开炮。

DodgeBot 静止不动,不断的跟踪对手的前一能量等级。当它的能量下降一定 的量时,DodgeBot 就认为它开炮了,并移向左边或右边。令人吃惊的是,这将 会迷惑大多数机器人的瞄准方法。它们要么直接向目标开炮,要么试着根据您的 速度和方向来推算位置。如果您的机器人不移动,两种算法都会正好冲着这个机 器人开炮。而您的机器人猜到了这一点,向旁边跃出一小步,但子弹仍是沿原来 的方向。图 1 展示了实际的 DodgeBot。

图 1. DodgeBot 对 Tracker(上当了!)

清单 1展示了 DodgeBot 的代码。每当雷达觉察到敌人时执行主代码部分。 DodgeBot 保持自己的直角状态,另外还有 30 度倾向对手。以 90 度角静止使 机器人避开子弹的能力达到最大。附加的 30 度倾斜使机器人具有一定的攻击力 ,并逐渐接近目标。接着是代码的关键部分:如果机器人觉察到能量下降介于 0.1 和 3.0 之间(火力范围),那么机器人就立即切换方向,向左或向右移动 。很简单。它会切换炮和雷达扫描的方向,假定如果它在最后一次扫描中看到了 一个机器人,那么当它再次扫过同一区域时还会再发现它。这时机器人就会开炮 。因为我把炮和雷达联系在一起,而扫描器是在它面朝对手的那一刻被调用的, 所以炮会正对着对手开炮。最后,我会为下一回合记下对手的能量。

清单 1. DodgeBot 的代码

import robocode.*;
public class DodgeBot extends AdvancedRobot
  double previousEnergy = 100;
  int movementDirection = 1;
  int gunDirection = 1;
  public void run() {
   setTurnGunRight(99999);
  }
  public void onScannedRobot(
   ScannedRobotEvent e) {
    // Stay at right angles to the opponent
    setTurnRight(e.getBearing()+90- 
      30*movementDirection);

    // If the bot has small energy drop,
   // assume it fired
   double changeInEnergy =
    previousEnergy-e.getEnergy();
   if (changeInEnergy>0 &&
     changeInEnergy<=3) {
      // Dodge!
      movementDirection =
      -movementDirection;
      setAhead((e.getDistance()/4+25)movementDirection);
    }
   // When a bot is spotted,
   // sweep the gun and radar 
   gunDirection = -gunDirection;
   setTurnGunRight(99999*gunDirection);

   // Fire directly at target
   f i r e ( 2 ) ;

   // Track the energy level
   previousEnergy = e.getEnergy();
  }
}

我在叫做 Wolverine 的机器人上使用了这一技巧,它另外使用了一些感应器 信息以使感觉更准确。当对手击中我的机器人时,对手得重新充能量。当我的机 器人击中对手时,能量等级就会下降。机器人可能同时感受到这两件事情,所以 Wolverine 利用这一信息来抵消对等的能量波动。

这个技巧还存在问题。子弹一发射,机器人就移动,所以它最终可能会移回 炮弹轨迹之内。最好是在估计子弹要到达时再移动。

更严重的问题是,即使您能够迷惑平常的瞄准,但实际上向旁边一步一步的 移动很容易预测。使用这一技巧的最佳方式可能是让信息指导您的移动,而不是 让它控制。

您也许会想,这个技巧这么简单,您自己原本也是想得到的。不错。这个游 戏就是这样玩的,这也正是它为什么如此吸引人的缘故。Robocode 就象棋类游 戏,每新走一步都会是一个新的想法。

时间: 2024-10-25 10:26:35

Robocode高手的秘诀的相关文章

初入SEO行业的感想

大家早上好!今天早晨的这份报告,是我昨晚突然对SEO思考的一些想法,在此和大家分享,希望对大家能够有所帮助. 大家都听说过 李彦宏吧,李彦宏是百度的创始人,也是现任CEO.在90年代,他赶上了互联网兴起的潮流,并且成功在早期互联网创业脱颖而出,他旗下的百度搜索是在中国是当之无愧的搜索引擎霸主. 在IT界是一个领袖,所以他的每句认真的话都将产生重大影响,甚至引起一场革命,就好像我们祖国的胡主席讲话,在家里我们的父亲讲话那种份量一样. 在百度2008峰会,李彦宏在回答记者提问的时候,他说了这么一句话

【营销】与周正龙和芙蓉姐姐畅谈炒作

开场白: 第一营销,营销第一,营销成就未来.今天的嘉宾是周正龙和芙蓉姐姐两位网络红人,欢迎! 周正龙:很高兴有机会来到这里和大家见面,广州比镇坪大多了! 芙蓉姐姐:很高兴有机会来到第一营销,能在这里和大家见面,芙蓉十分荣幸! 樽粮:我受第一营销所托,作今晚的特约节目主持人.我们这期节目是为春节准备的,请两位做春节贺词. 周正龙:大雪压青松,青松挺且直.岁末的低温虽然带来冰雪阻隔,但阻挡不了我们回家的匆匆脚步.作为男人更要在事业上勇于开拓,奋发进取.假如我的脚步落在了你的脚上,那么请原谅我,不是我

昝智军:以最小的投入获取最大的收益

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 在我的上篇文章中,分析牟长青谈网站推广四个要点,在这四个要点中,我认为最特别推荐的是第四种: 分析最适合的推广做到极致. 其根本目的是用最小的投入获得最大的收益,当然,这也是高手的秘诀所在.你想知道其中的秘诀吗?在这里,我为大家分享下我的思路:希望对你有所帮助. 围绕这个主题,要达到此目的必须做到一下几点: 1, 发现需求.只有找到需求,你的

《Excel高手捷径:一招鲜,吃遍天》一第29招 Excel 文件“减肥瘦身”秘诀

第29招 Excel 文件"减肥瘦身"秘诀 Excel高手捷径:一招鲜,吃遍天爱美的人士总是热衷于减肥.对于Excel文件也一样,给文件"减肥",能提高效率.在实际使用Excel过程中发现存在这种现象:Excel文件不明原因增大,文件内容很少,可是文件高达几兆,打开.计算.保存都很缓慢,甚至死机,有时甚至造成文件损坏.无法打开的情况,造成文件"虚胖"的原因及"减肥瘦身"办法有以下几种: 1.工作表中有大量的细小图片对象造成文件

SEOer要学习大神的成功秘诀

最近在网络上出现一个优化"重庆SEO"的博客站,23天做到几个主关键词百度第一,而做这几个关键词的基本都是网络推广行业的SEOer,能在短时间获得这么好的成绩被SEOer新手称之为SEOer大神.     大神有何神奇之处,先把小人之心放肚子里,不考虑"黑帽"技术. 成功秘诀一 取巧的域名,大神的主关键词"重庆seo"域名"cq-seoer.com",契合度高,易识别,拆分域名"cq""seo&q

QQ升级中坐庄与帮庄的秘诀

坐庄秘诀 -铺底牌 底牌铺完,这局牌的胜负也就决定了.因此至关重要. 1通常情况下,一定要绝一门付牌,因为这是和对家过桥的通道! 2三门付牌都好,主少,也没有主牌分,要先把主牌绝掉! 3没有分的付牌,不可留对,即便是一对Q也扣掉.否则一手出去,可能就丢五十分. 4主不强的话,分多的付牌不扣没关系,一定要绝掉分少的付牌. 掌握上述秘诀,结合其它常识,30秒钟的扣牌时间足以奠定局面:大胜之局奔大光,小胜之局奔小光:危难之局只留给敌人七十五分,败局锁定在120之内! 坐庄要领 ①首攻:难牌可选择拔尖问

《Excel高手捷径:一招鲜,吃遍天》一导读

前 言 Excel高手捷径:一招鲜,吃遍天 如果你只有20个数据时,会不会Excel并不重要:而当你要处理上千个甚至上百万个数据时,Excel就成了最好的"武器".你是个表格"菜鸟",对着一堆函数和技巧,觉得此生成为Excel高手无望?要想成为Excel高手,首先要学会"偷懒","懒"在这里不是态度,而是时间,是效率.因为要"偷懒",逼得你不得不掌握Excel各种技巧.本书将引领你如何做一个幸福的"

告诉你11个移动应用开发秘诀

假如你要真正开发一款受大众追捧的应用,那么是说起来容易做起来却难.而美国的科技新闻网站TNW通过采访11名目前已经成功的年轻企业家,总结了他们的移动应用开发建议. 1.测试非常关键 移动应用测试目前还是一个相对新颖的领域,但是,它对应用的发展影响却非常大.请你借助诸如Artisan之类的平台去完成这些测试吧--来自商业智能在线的服务网站RJMetrics的创始人罗伯特·莫尔(Robert J. Moore). 2.深挖用户的兴趣 用户的兴趣要远远比你自己的更加重要.而你需要深刻地去理解用户的兴趣

黑客全军覆没 书生安全云实战各路高手

本文讲的是黑客全军覆没 书生安全云实战各路高手,武术之道讲究形神兼备,内外合一.然世间习武者,多钻研外功者,却少见恒练内功之人.皆因外功一事,习之便利,所费时日既短又少,而无论所习何种内功,少则几年,多则数十年方可见效.因此,真正习武之人除各种外法之外,必兼练一.二种内家功夫以辅其不足. 以武论道,当今互联网世界同样可借古喻今.例如谷歌.Gmail用户账号被黑.icloud艳照的疯狂泄露,再到波及全球的棱镜门.斯诺登这一系列安全问题,无一不是震动四方的大事.为此,在安全事件频发的背景下,我国工业