Picses' sky

Picses' sky
posts - 43, comments - 29, trackbacks - 0, articles - 24

玩Robocode游戏,学习Java[zz]

Posted on 2007-07-23 09:34 Matthew Chen 阅读(500) 评论(1)  编辑  收藏 所属分类: Datastructure and Algorithem

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对话框选择新建的机器人了。

  1. package a11;   
  2. import robocode.*;     
  3.   
  4. /**  
  5.  * A11 - a robot by (your name here)  
  6.  */  
  7. public class A11 extends Robot   
  8. {   
  9.     /**  
  10.      * run: A11’s default behavior  
  11.      */  
  12.     public void run() {   
  13.         // After trying out your robot, try uncommenting the import at the top,   
  14.         // and the next line:   
  15.         //setColors(Color.red,Color.blue,Color.green);   
  16.         while(true) {   
  17.             // Replace the next 4 lines with any behavior you would like   
  18.             ahead(100);   
  19.             turnGunRight(360);   
  20.             back(100);   
  21.             turnGunRight(360);   
  22.         }   
  23.     }   
  24.   
  25.     /**  
  26.      * onScannedRobot: What to do when you see another robot  
  27.      */  
  28.     public void onScannedRobot(ScannedRobotEvent e) {   
  29.         fire(1);   
  30.     }   
  31.   
  32.     /**  
  33.      * onHitByBullet: What to do when you’re hit by a bullet  
  34.      */  
  35.     public void onHitByBullet(HitByBulletEvent e) {   
  36.         turnLeft(90 - e.getBearing());   
  37.     }    
  38. }  

看代码中的英文注释,理解上面的程序应该没有问题的。当然如果你要战胜别人,就需要修改上面的代码,提高你的机器人的智能。下面的链接里有相关的文章介绍如何编写厉害的机器人的。

Robocode带的编辑器功能比较简陋,你也可以设置成用Eclipse编辑机器人代码。具体的方法见http://robocode.sourceforge.net/help/ide/ide.html

Robocode相关链接
          Robocode主页
          Robocode技巧精粹

Feedback

# re: 玩Robocode游戏,学习Java[zz]  回复  更多评论   

2007-11-11 21:32 by 曲强 Nicky
http://cpc.sjtu.edu.cn/contest/jsp/1/rules.jsp
这个也不错~~呵呵

只有注册用户登录后才能发表评论。


网站导航: