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 :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 #!/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())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.
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()
Comment puis je faire pour convertir mon code Python en jar utilisable pour Robocode ?
Merci.
Partager