利用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机器人

你可能感兴趣的:(Python)