(转载请注明来源于 金庆的专栏)
先用Python写个简单的机器人:
from
robocode
import
*
class SampleBlaze(Robot):
def run(self):
while 1 :
self.ahead( 100 )
self.back( 100 )
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机器人