Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Bibliothèques tierces
Bibliothèques tierces Forum d'entraide pour les autres bibliothèques non présentes dans la distribution standard de Python
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 06/01/2013, 22h26   #1
RyDroid
Invité de passage
 
Homme
Inscription : janvier 2013
Messages : 1
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : janvier 2013
Messages : 1
Points : 0
Points : 0
Par défaut Convertir un .py en .jar via Jython pour Robocode

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 :
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 :
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.
RyDroid est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h47.


 
 
 
 
Partenaires

Hébergement Web