0
点赞
收藏
分享

微信扫一扫

利用Jython开发Robocode机器人


金庆的专栏)

先用Python写个简单的机器人:



from 
   robocode  
  import 
    
  * 
   

 
  class 
   SampleBlaze(Robot): 
    
  def 
   run(self): 
       
  while 
    
  1 
  : 
         self.ahead( 
  100 
  )
         self.back( 
  100 
  )


编译为jar包,注意要指定package名,


jythonc -a -p "org" -j "SampleBlaze1.0.jar" "SampleBlaze.py"


打包成jar是为了从jython.jar从提取相关类。
其实jython2.2b2类提取可能有问题,部份类会无法提取到结果包中。
如果碰到jython类缺少,需要手工提取。

将SampleBlaze1.0.jar解压,手工加入缺少的类,并编写一个
SampleBlaze.properties
放在org目录下。
最好由robocode编写一个简单的机器人并打包,从中可提取properties文件,稍加修改就行。
例如:

  
  
   
   #Robot Properties
#Fri May 
   
   25
   
    
   
   21
   
   :
   
   33
   
   :
   
   02
   
    CST 
   
   2007
   
   
robot.java.source.included
   
   =
   
   true
   
   
robot.version
   
   =
   
   1.6
   
   
robot.description
   
   =
   
   description.....
robocode.version
   
   =
   
   1.3
   
   
robot.author.name
   
   =
   
   Jin Qing
robot.classname
   
   =
   
   org.SampleBlaze

  
  
 
 
再打成jar包。然后就可以由robocode导入了。第一次读取机器人会比较费时。
不过总算能看到python写的机器人了。

不过还是有点问题,每次第一局,机器人总是处于disable状态,第二局开始才正常。
*sys-package-mgr*: The java security manager isn't allowing access to the package cache dir, 'cachedir/packages'
因为jython要读写python.home下的cachedir/package目录,而robocode禁止这种操作。
不知道为什么第二局就好了?

看来只能在自己机器上玩玩行,要进行国际比赛还是只能用纯Java.
如果设置robocode参数-D NOSECURITY=true,就不需要打包,直接将jython.jar添加到classpath,就可以任意使用jython了。

参考:


利用Jython开发Robocode机器人



举报

相关推荐

0 条评论