最近在上网时发现了一个叫做Robocode的游戏。最近我已经对它上瘾了。Robocode官方网站上对Robocode的介绍:
Robocode is a programming game, where the goal is to develop a robot battle tank to battle against other tanks in Java or .NET. The robot battles are running in real-time and on-screen.(大意是Robocode是一个编程游戏,玩家目标是开发自己的坦克去对抗别人开发的坦克。)
Robocode十分容易上手,步骤无非是: 下载 - 安装 - 开发 - 运行。
下载:
http://sourceforge.net/projects/robocode/files/
我下载的是robocode-1.7.2.0-Beta-2-setup.jar
安装:
安装Robocode之前,要先安装JDK
安装JDK后直接双击下载下来的jar文件就可以开始安装了。如果这样不行,可以在进入命令行,并转到jar文件所在目录,并执行下面命令:
java -jar robocode-1.7.2.0-Beta-2-setup.jar
注意上命令中-jar参数中指定的是你下载jar包的文件名,可能会因为你的版本的不同而不同。
先玩一把
安装好后,你可以在桌面上看到游戏的快捷方式。还等什么,双击运行!
Robocode预置了一些样例坦克供你娱乐和参考。不如让他们互相PK下,感受感受。在Robocode程序主页面菜单中选择Battle->new,以便创建一个战役:
在New Battle 窗口中,选择一些坦克
上图中最左边是坦克分类(是按照包分类的),中间是该分类中包含的坦克,通过“Add”或“Add All”按钮添加几个坦克后,点击Start Battle按钮,它们之间就可以PK了!但是要小心哦,不要一次添加太多坦克,否则你的Java虚拟机会内存溢出的,呵呵。
下面是PK时的场景:
该面板上有一些按钮,大家可以自己试试,通过调节下方的滑块可以改变游戏速度。
我也来开发
开发第一个坦克只需要花费你不到一分钟时间。但是要开发一个真正NB的坦克,可能要花费你好几月的时间。我们就从最简单的开始吧。
Robocode集成了一个简单的代码编辑器,可以帮助你创建坦克类,并且编译和部署。通过Robot->Editor打开编辑器:
然后在编辑器中创建一个新的坦克:
设置你的坦克名称(类名):
设置你坦克所在的包(因为我们正在创建一个Java类,所以最好指定报名):
下面是自动生成的坦克代码:
如上图所示,编辑器为我们创建了一个继承自Robot类的类,并覆盖了其中的一些方法:
run()方法: 因为每个坦克实例对象都对应一个线程,所以,我们在run方法中定制坦克的主要行为
在run方法中,我们当然可以调用父类提供的一些方法,以便让我们的坦克动起来!如:
ahead -- 向前移动
turnGunRight -- 炮塔向右旋转指定角度
...
onXXX方法: 当某些事件发生时,该方法会得到执行
编辑器为我们创建的坦克类覆盖了onScannedRobot方法和onHitByBullet方法,这样,我们可以编写当坦克发现敌情和被别人打中时所采取的动作。
对于如何更好的实现自己的坦克,我将在后面的文章中进行介绍。
编译、部署、运行!
保存文件。
通过Compiler->Compile编译Java类
关闭编辑器,再次创建新战役,你可以看到你创建的第一个坦克了:
后续文章我会介绍一些更深入的技术!