程序员的游戏
很多不错的资料都没了,以防万一,复制一份。原始地址:http://addone.bokee.com/4642760.html
作者: Addone Squid [天堂鱿鱼] (addone@gmail.com)
本文的目的在于介绍一类特殊的游戏:编程游戏。这类游戏和大多数战略游戏一样,都提供了一个平台,各种不同的虚拟角色在其中进行角斗士般的竞技比赛。和传统游戏不同的是,玩家并不能直接操纵这些角色,而是通过编程的方式来创建角色,并将其加载到对战平台中,然后观看它们之间的精彩战斗。
无疑,这种游戏相当适合编程学习或者竞赛,正因如此,我将它们称为:程序员的游戏。下面将简要介绍三个非常有特色的编程游戏。
1. RoboCode(机器坦克仿真战斗)
图1 RoboCode IDE(图片来自IBM eveloperworks)
![](http://www-128.ibm.com/developerworks/cn/java/j-robocode/fig1.gif)
RoboCode无疑是这类游戏中最有影响力和代表性的。Robocode是一个很容易使用的机器人战斗仿真器,可以在所有支持Java2的平台上运行。开发者们可以创建自己的机器人,把它放到这个平台上,同其他开发者们创建的机器人对手在这个平面上进行战斗。由于在创建机器人的过程中需要加入用户自己独特的策略代码,因此在战场中你会见到以进攻为重点的机器人,同时也会有以防守为重点的机器人。玩家通过每一次的战斗经历,来了解对手机器人的长处,在不改变机器人自身特点的情况下,去吸收对手机器人的长处来不断的完善自己的机器人,才能使自己的机器人在战场中立于不败之地。可以说Robocode的诞生为智能系统的研究提供了一个很好的理论联系实际的实验平台。
每个Robocode参加者都要利用Java语言元素来创建自己的机器人。Robocode里有一些预先做好的机器人对手让你入门,但一旦您已经不再需要它们了,就可以把您自己创建的机器人加入到正在世界范围内形成的某个联盟里去和世界最强手对阵。
由于RoboCode本身采用Java开发,因此也是跨平台的,在Windows、Linux、Mac OS上都可以运行。
图2 RoboCode在我的Linux系统上运行
![](http://addone.bokee.com/inc/robocode1.png)
RoboCode的中文资料相对来说还是比较丰富的。以前还有个RoboCode中华联盟,不过很可惜,现在似乎已经关闭了。大部分的中文资料都可以在IBM的网站中找到。
2. DroidBattles (战机模拟格斗)
DroidBattles在国内的流行程度远不及RoboCode,这可能跟它迟迟没有推出Windows版本有关。不过,这无疑是一款相当有特色的编程游戏。DroidBattles将战斗蔓延到了太空,角色也变成了形态各异的太空战机。DroidBattles同样提供了一个完整的IDE环境,非常便于编程和比赛。
图3 DroidBattles的IDE环境
![](http://addone.bokee.com/inc/droidbattles1.png)
和RoboCode不同,DroidBattles中的飞机配件要多得多,有CPU、引擎、转向装置、护盾等,当然还有各种各样的武器,每种配件都有5种级别,根据配件的种类和级别不同,其价格也有很大区别。由于比赛有着战机价格的限制,过于昂贵的战机将无法进入默认的比赛。因此,在编程之前,确定战机的类型并为其精心选配零件就相当重要了。
战机的程序需要使用一种汇编语言编制。程序是和所安装的配件直接相关的,程序可以通过战机装配的扫描仪、传感器获取战场信息,然后将指令输出到相应控制或武器配件。尽管使用的是汇编语言,但由于使用了配件机制,因此战机的程序其实并不难编写。战机的配置和编译环境都在同一个界面中完成。
图4 DroidBattles的战机装配开发界面
![](http://addone.bokee.com/inc/droidbattles2.png)
DroidBattles目前支持Linux、Windows两种平台。不过Windows版本仍然处于alpha测试阶段。
DroidBattles的资料及示例战机可以在官网找到。而且IDE中也自带了详尽的教程。
图5 DroidBattles的战斗场面
![](http://addone.bokee.com/inc/droidbattles4.png)
![](http://addone.bokee.com/inc/droidbattles3.png)
3. CoreWar (磁芯大战)
和其简单的界面相反,CoreWar有着相当悠久的历史,其最初是于1959在贝尔实验室诞生的,甚至计算机病毒的诞生也和这款游戏有关。磁芯大战运行在当时被称为Mars是一种简单的计算机上,它有固定的8000个内存单元,和约10来个指令。然后整个大战程序就是由这些指令完成。这款游戏在国外很流行,其知名度和地位也是非常高的。每年除了会举办各种大小赛事之外,还会组织周年纪念聚会。图6 CoreWar的经典界面
![](http://www.koth.org/pics/pmars.jpg)
CoreWar的战场是一个虚拟机。玩家需要运用许多高深的算法知识编写出自己的“战士”。和计算机病毒相似,战士们在虚拟机中或攻击敌人,或占据更多“领地”(内存空间),或守护自己的“领地”。比赛以所占领土多少和存活能力强弱决定胜负。这其实就是病毒的雏形(当然似乎某些方面比病毒还厉害),每个程序为了在内存中保留自己,就必须不断地复制自己,传播自己,同时可以修复被其他程序攻击的部分,当然还进行着破坏。
CoreWar支持两种类汇编语言:CoreWar和RedCode。每种语言编写的战士都只能和同类的战士交战。由于相对来说比较专业一些,CoreWar“战士”的编写难度要比前两款游戏要大不少。
图7 众多的“战士”
![](http://addone.bokee.com/inc/corwars1.png)
或许是由于其悠久的历史,CoreWar支持的平台也相当多,从Amiga、早期的Macintosh、DOS,到Windows、Linux、Mac OS X都支持。另外,还有Java版本jMars可供下载。
另外,CoreWar有着相当丰富的赛事(称为Hill),包括世界顶级赛事KOTH(King of The Hill)以及许多世界级锦标赛。 在官网和百科全书上,玩家可以找到各种教程及示例程序。
图8 CoreWar的交战场面
![](http://addone.bokee.com/inc/corwars2.png)
![](http://addone.bokee.com/inc/corwars3.png)
以上介绍的3款游戏都是相当有特色的经典编程游戏,有兴趣的编程初学者或者有经验的编程高手不妨试试。