Archive:Python : Résumé des différences entre python 2.6 et python 3
Ce wiki a été archivé en 2018.
Le nouveau wiki se trouve à: ressources.labomedia.org Les fonctionnalités sont désactivées: vous pouvez faire une recherche sur Google site:https://wiki.labomedia.org et découvrir La Labomedia. |
Retour sur les pages du jeu de voitures |
Sommaire
Ressources
- Comment adapter du python 2.6 de la 2.49 à Python 3.1 pour Blender 2.5x.
- Blender Game Bibliographie
- docs.pythonsprints.com/python3_porting beaucoup plus complet.
GameLogic
Il faut importer GameLogic dans Blender 2.5x alors qu'il était importer automatiquement dans la 2.49
import GameLogic
Adaptation
Blender 2.49 et python 2.6 donnait déjà des alertes dans la console sur les mèthodes obsolètes, si l'option du menu "Game" >> "Ignore Deprecation Warnings" n'est pas cochée. Si, comme moi, vous réutiliser du code trouvé de ci de là, il faut le corriger.
Méthode | Python 2.6 obsolète | Python 2.6 | Ptyhon 3 |
---|---|---|---|
Get controller owner |
controller = GameLogic.getCurrentController()
owner = controller.getOwner() La version courte |
controller = GameLogic.getCurrentController()
owner = controller.owner La version courte |
controller = GameLogic.getCurrentController()
owner = controller.owner La version courte |
Get owner property |
a = owner.prop |
a = owner['prop'] |
a = owner['prop'] |
Set a owner property |
foo = 1
owner.prop = foo |
foo = 1
owner['prop'] = foo |
foo = 1
owner['prop'] = foo |
Get Objet |
|
scene = GameLogic.getCurrentScene()
objList = scene.objects
objCar = objList["OBCar"] |
scene = GameLogic.getCurrentScene()
objList = scene.objects
objCar = objList['Car']
La version courte
|
Get Position | position = owner.getPosition()
|
position = owner.position
|
position = owner.position
|
print "foo"
|
print("foo")
| ||
Set Position | owner.worldPosition = [x, y, z]
|
owner.worldPosition = [x, y, z]
| |
Set world orientation |
def owner_orientation(alpha, beta, gamma): euler = Mathutils.Euler(alpha, beta, gamma) owner.worldOrientation = euler.toMatrix() |
def owner_orientation(alpha, beta, gamma): alpha = alpha * 3.1416 / 180 beta = beta * 3.1416 / 180 gamma = gamma * 3.1416 / 180 rot_en_euler = mathutils.Euler([alpha, beta, gamma]) owner.worldOrientation = rot_en_euler.to_matrix()
|
2to 3
Dans un terminal
2to3 -w exemple.py
crée un fichier bak et modifie l'original !!