1
Discussions générales / python-sfml2: version 1.1
« le: Juin 16, 2012, 08:38:04 pm »
La dernière version que j'ai annoncé il y a deux semaines était une version rapide. J'avais implémenté en priorité les parties les plus importantes de l'API (les classes et fonctions les plus utilisées) pour rendre le binding le plus utilisable possible. J'ai maintenant le plaisir de vous annoncez que la mise à jour est finie et que le binding est complet, propre et stable.
Quand je dis complet, je me référe à un binding contenant toutes les classes et fonctions disponibles dans la SFML séparées dans cinq différents modules: system, window, graphics, audio et network. Le module réseau est fournis dans le but d'être exhaustive mais son utilisation est découragée parce que la bibliothèque standard de Python en fournit fournit déjà un. Une documentation, un tutorial and les exemples officiels sont inclus pour vous aider à utiliser le binding. Par exemple, ça vous explique comment intégré pySFML2 avec PyQt4.
En disant propre, je veux parler d'un binding où les messages d'erreur sont gérés proprement et où vous ne devez pas utiliser un "byte string" pour tout lorsque vous utilisez Python 3. Le code source est aussi propre donc pour les personnes qui aimeraient contribuer ou tout simplement modifier le code, ils trouveront un code suivant des conventions, utilisant la syntaxte correcte de Cython et séparé dans différents fichiers.
En disant stable, je veux parler d'un binding où des tests automatiques ont été fait, et pourra dans le future m'empècher d'introduire de nouvelles erreurs, de nouveau bugs quand je ferais des changements. Bien sûr je ne peux pas prétendre qu'il n'y ai pas de bug parce que c'est sa première sortie et j'espère recevoir un maximum de feedbacks afin de corriger les derniers bugs.
Je considère le binding plus pythonic parce qu'il n'essaie pas d'émuler les multiples définitions qu'on trouve en C++ et que Python ne supporte pas, et vous n'aurez pas à vous préoccupé des types, ce qui donne plus de fléxibilité au binding.
Cette version inclus deux exemples en plus: pong.py et shader.py.
Des installateurs pour Windows et des pacakges pour Ubuntu sont fournit pour l'aisance d'installation.
Pour vous donner un aperçu, ici sont quatres bout de code qui résume des fonctionnalitées intéressante que vous ne trouvez pas dans le binding officiel.
Importez les modules indépendamment.
Plus de flexibilité quand vous utilisez les vectors.
La manière dont vous gerez les évenements pourraient vous surprendre
sf.Image a une méthode spécial qui vous permet the visualiser l'état courrant d'une image. Très utile pour débugger.
Je vous renvois à la documentation en ligne pour l'installation et les explications.
Site web: http://openhelbreath.net/python-sfml2/
Documentation: http://openhelbreath.net/python-sfml2/documentation.html
Bugtracker: http://openhelbreath.net/python-sfml2/flyspray/
Github: https://github.com/Sonkun/python-sfml2
La prochaine version devrait ajouter les derniers examples officiels manquants (voip.py, x11.py, cocoa.py et win32.py), règler un maximum de bugs (si il y en a) et fournir des installateurs pour Mac OSX et les pacakges pour Fedora.
J'espère qu'il n'y a pas de bug majeur qui vous empéchera d'utiliser le binding.
Quand je dis complet, je me référe à un binding contenant toutes les classes et fonctions disponibles dans la SFML séparées dans cinq différents modules: system, window, graphics, audio et network. Le module réseau est fournis dans le but d'être exhaustive mais son utilisation est découragée parce que la bibliothèque standard de Python en fournit fournit déjà un. Une documentation, un tutorial and les exemples officiels sont inclus pour vous aider à utiliser le binding. Par exemple, ça vous explique comment intégré pySFML2 avec PyQt4.
En disant propre, je veux parler d'un binding où les messages d'erreur sont gérés proprement et où vous ne devez pas utiliser un "byte string" pour tout lorsque vous utilisez Python 3. Le code source est aussi propre donc pour les personnes qui aimeraient contribuer ou tout simplement modifier le code, ils trouveront un code suivant des conventions, utilisant la syntaxte correcte de Cython et séparé dans différents fichiers.
En disant stable, je veux parler d'un binding où des tests automatiques ont été fait, et pourra dans le future m'empècher d'introduire de nouvelles erreurs, de nouveau bugs quand je ferais des changements. Bien sûr je ne peux pas prétendre qu'il n'y ai pas de bug parce que c'est sa première sortie et j'espère recevoir un maximum de feedbacks afin de corriger les derniers bugs.
Je considère le binding plus pythonic parce qu'il n'essaie pas d'émuler les multiples définitions qu'on trouve en C++ et que Python ne supporte pas, et vous n'aurez pas à vous préoccupé des types, ce qui donne plus de fléxibilité au binding.
Cette version inclus deux exemples en plus: pong.py et shader.py.
Des installateurs pour Windows et des pacakges pour Ubuntu sont fournit pour l'aisance d'installation.
Pour vous donner un aperçu, ici sont quatres bout de code qui résume des fonctionnalitées intéressante que vous ne trouvez pas dans le binding officiel.
Importez les modules indépendamment.
from sfml.window import sf # need only the window module ?
from sfml.audio import sf # need only the audio module ?
from sfml.audio import sf # need only the audio module ?
Plus de flexibilité quand vous utilisez les vectors.
vector = sf.Vector2()
vector.x = 23 # set an integer
vector.y = 6.42 # set a float
vector.z = Decimal(0.12346578) # set a decimal for advantages over the float datatype
vector.x = 23 # set an integer
vector.y = 6.42 # set a float
vector.z = Decimal(0.12346578) # set a decimal for advantages over the float datatype
La manière dont vous gerez les évenements pourraient vous surprendre
for event in window.events:
if type(event) is sf.CloseEvent:
window.close()
if type(event) is sf.KeyEvent and event.pressed:
character.fire()
if type(event) is sf.FocusEvent:
if event.lost: music.stop()
elif event.gained: music.play()
if type(event) is sf.CloseEvent:
window.close()
if type(event) is sf.KeyEvent and event.pressed:
character.fire()
if type(event) is sf.FocusEvent:
if event.lost: music.stop()
elif event.gained: music.play()
sf.Image a une méthode spécial qui vous permet the visualiser l'état courrant d'une image. Très utile pour débugger.
image.load_from_file("myimage.png")
image.create_mask_from_color(sf.Color.YELLOW)
image.show() # launch a viewer with the current image state
image.create_mask_from_color(sf.Color.YELLOW)
image.show() # launch a viewer with the current image state
Je vous renvois à la documentation en ligne pour l'installation et les explications.
Site web: http://openhelbreath.net/python-sfml2/
Documentation: http://openhelbreath.net/python-sfml2/documentation.html
Bugtracker: http://openhelbreath.net/python-sfml2/flyspray/
Github: https://github.com/Sonkun/python-sfml2
La prochaine version devrait ajouter les derniers examples officiels manquants (voip.py, x11.py, cocoa.py et win32.py), règler un maximum de bugs (si il y en a) et fournir des installateurs pour Mac OSX et les pacakges pour Fedora.
J'espère qu'il n'y a pas de bug majeur qui vous empéchera d'utiliser le binding.