Welcome

首页 / 软件开发 / JAVA / 世界robocode机器人的四大运动方式分析

世界robocode机器人的四大运动方式分析2010-11-29 IBM iiley前言

Robocode 在短短的时间内风靡全球,全世界的robocode爱好者 设计出了大量的优秀智能机器人,他们都拥有各自的运动方式,有的很容易被击 中,有的却很难射击。设计一个好的运动方式是优秀robocode机器人取胜的关键 。上届世界中级组冠军Fermat就是靠他让敌人难以琢磨的运动躲过敌人一发发的 子弹而取得胜利。(当然,他的优秀的瞄准射击也是取胜的关键)怎样的运动才 能不被敌人击中,让敌人琢磨不透呢?这里我把常见的机器人运动方式分为4类 来详解。

明显有规律的主动运动

刚开始玩robocode的很多都会有这种感觉, Samples里面Walls最强,谁都打不到他。Wall就是一种很典型的明显有规律的主 动运动,他总是直线绕墙走,如图1:

图1

因为它几乎总是在动,而Sample里面的机器人的射击方法几乎都是直 接射击敌人的当前位置,由于子弹到达目标需要一定的时间,当子弹飞过去的时 候,Wall已经不在原来那个位置了,所以它们总是打不到它,因此在刚开始时它 看起来是那么的强大。但是,Walls并不能算一个优秀的机器人,它仅是作为一 个例子来介绍robocode机器人的制作方法,稍厉害一点的机器人都能很得心应手 的射击它,有的机器人甚至能枪枪必中的打它。他们大多运用了提前量的算法计 算出子弹到达Walls的时候Walls大概走的距离,然后攻击Walls下一步将要行走 的地方。至于怎样编码实现,已经超出了这篇文章的范围,你可以参考 Predictive targeting。

采取这一类运动方式的机器人很多,它们规律 很明显,很容易被掌握,像SpinBot总是做圆周运动(圆周运动的射击方法可以 参见 圆周瞄准),Corners 总是躲在角落不动……你会发现它们 都是很容易对付的角色,是不是要写出优秀的机器人就不能用这样的策略呢?当 然不是,在人眼看起来有规律的运动,机器人未必会认为有规律(这要取决于你 的机器人的分析方法)。特别是在群战的时候,你要顾及大量的敌人,你不可能 只关注一个敌人的运动,你要同时关注A或关注B的运动,因此即使A作了规律很 明显的运动,你也很难察觉。

典型的例子就是David McCoy的 PrairieWolf,你看它群战的时候经常待在角落做一种绕角落来回运动,但是你 却未必能很容易的射击他,还有就是Paul Evans的SandboxLump,它不仅是在角 落来回,而且还夹杂着很多的弧线运动,如图2:

图2