Bonjour.

À l'école, j'apprends le Java. Mais, je préfère Python, de plus il me permet de changer.
Je vais devoir programmer un petit robot pour Robocode (multiplateforme). Malheureusement, il ne comprend que le Java. J'ai donc envisagé d'utiliser Jython qui permet de transformer du code Python (seulement Python2 pour l'instant) en bytecode Java et d'utiliser les classes Java.

J'ai converti le code Java du robot par défaut en Python :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/python3
# -*-coding:Utf-8 -*
 
from Robocode import *
 
class Default(Robot):
	def run():
		"""run: Default's default behavior"""
 
		while True:
			ahead(100)
			turnGunRight(360)
			back(100)
			turnGunRight(360)
 
	def onScannedRobot(e):
		"""onScannedRobot: What to do when you see another robot"""
		fire(1)
 
	def onHitByBullet(e):
		"""onHitByBullet: What to do when you're hit by a bullet"""
		turnLeft(90 - e.getBearing())
Habitué à tous convertir en class (je n'ai jamais fait de jar), j'ai cherché à faire la même chose. J'ai donc adapté un script pour remplacer jythonc (visiblement pas disbonible avec jython2.5, que j'ai installé via les dépots d'Ubuntu).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/python3
# -*-coding:Utf-8 -*
 
from java.io import *
import _py_compile
import imp as pyimp
import org.python.core.imp as jimp
import os.path
import sys
 
#Show info
def jcompile_usage():
	print ("Usage $:jython jcompile.py")
	print ("file.py gets compiled to file$py.class")
 
#Compile .py to .class
def jcompile_compile( fname ):
	#java file object
	jfile = File( fname )
	#Get module name
	mname = _py_compile.getModuleName( jfile )
	#Compile and get bytes
	bytes = jimp.compileSource( mname, jfile )
	#Dump bytecode into a file
	jimp.cacheCompiledSource( os.path.abspath( fname ), os.path.abspath( "./" + mname + "$py.class" ), bytes )
 
if len(sys.argv) != 2 :
	jcompile_usage();	#insufficient arguments
	sys.exit(0)			#exit
 
if os.path.exists( sys.argv[1] ):
	print "compiling %s" % sys.argv[1]
	jcompile_compile( sys.argv[1] )
else:
	print "Given file doesn't exist"
	jcompile_usage()
J'ai trouvé certains posts qui devraient expliquer comment résoudre; mais soit je ne les comprends pas, soit il ne sont plus d'actualité (avec les nouvelles versions). Par exemple, certains nécessitent une méthode main, hors la classe qui doit être créé juste être utilisé par Robocode.
Comment puis je faire pour convertir mon code Python en jar utilisable pour Robocode ?

Merci.