Robocode是Java编写的一款开源的坦克游戏,与一般的游戏有着非常不同的玩法。游戏中的坦克不是由键盘、鼠标或者游戏杆直接控制,而是通过你用Java对坦克机器人编程,给坦克机器人设计智能来指挥它战斗。比如ahead(100)使机器人向前移动100。你的程序指挥你的坦克攻击对手,同时躲避来自对手的攻击,以此来较量得分的多少。你可以下载别人的机器人,和你编写的机器人竞赛,如果你觉得你的机器人够厉害,也可以上传你机器人到Robocode的主页和别人比赛。非常有意思,在娱乐的同时学习和提高你的Java编程能力。
Robocode最新的版本是1.3.5,可在Robocode主页上下载。下载完robocode-setup-1.3.5.jar,双击即可安装Robocode游戏,需要JRE1.5+。安装完成,启动程序,看到如下界面
程序中已经带了一些坦克机器人,我们可以先用这些机器人学习如何开始一场战斗, 然后再学习如何编写你自己的机器人。
点击Battle/New菜单,或者按Ctrl+N新建一个战斗。在弹出的New Battle对话框中选择坦克机器人和战斗的场数。比如选择sample.MyFirstRobot,sample.RamFire和sample.TrackFire, 设置场数Number of Rounds为5场. 点击Start Battle按钮开始战斗。
战斗场面
编写一个机器人非常简单,虽然编写一个厉害的机器人很难。点击Robot/Editor菜单,或者按Ctrl+E打开机器人编辑窗口。选择New/Robot菜单新建一个Robot,根据提示输入Robot的名字和Package的名字。新建的Robot已经包含如下代码,其实这已经是一个可用的坦克机器人,保存,编译后,你就可以在New Battle对话框选择新建的机器人了。
- package a11;
- import robocode.*;
-
-
-
-
- public class A11 extends Robot
- {
-
-
-
- public void run() {
-
-
-
- while(true) {
-
- ahead(100);
- turnGunRight(360);
- back(100);
- turnGunRight(360);
- }
- }
-
-
-
-
- public void onScannedRobot(ScannedRobotEvent e) {
- fire(1);
- }
-
-
-
-
- public void onHitByBullet(HitByBulletEvent e) {
- turnLeft(90 - e.getBearing());
- }
- }
看代码中的英文注释,理解上面的程序应该没有问题的。当然如果你要战胜别人,就需要修改上面的代码,提高你的机器人的智能。下面的链接里有相关的文章介绍如何编写厉害的机器人的。
Robocode带的编辑器功能比较简陋,你也可以设置成用Eclipse编辑机器人代码。具体的方法见
http://robocode.sourceforge.net/help/ide/ide.html。
Robocode相关链接
Robocode主页
Robocode技巧精粹