Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: python-sfml2: version 1.1  (Lu 6229 fois)

0 Membres et 1 Invité sur ce sujet

Sonkun

  • Full Member
  • ***
  • Messages: 241
    • Voir le profil
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.
from sfml.window import sf # need only the window 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


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()


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


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.
« Modifié: Juin 24, 2012, 04:01:33 am par Sonkun »
Interested in using SFML with Python ? Try out its Python binding!

danman

  • Hero Member
  • *****
  • Messages: 1121
    • Voir le profil
    • E-mail
Re : python-sfml2: version 1.1
« Réponse #1 le: Juin 22, 2012, 01:13:07 pm »
Ca l'air vraiment pas mal :) plus qu'a tester !
Pointilleur professionnel

Sonkun

  • Full Member
  • ***
  • Messages: 241
    • Voir le profil
Re : python-sfml2: version 1.1
« Réponse #2 le: Juin 24, 2012, 04:05:58 am »
Les éxecutables pour Windows 64 bits sont toujours manquantes. J'ai des problèmes à les compiler pour cette platformes... Je viens juste de reformater mon Windows, j'espère qu'avec une autre version de MVS ça va marcher.

Pour l'instant, je n'ai remarqué qu'un bug. C'est la méthode contains(point) de sf.Rectangle.

Tu me donnes des retours danman? :)

PS: j'ai corrigé les oublis de traduction dans l'announce :)
Interested in using SFML with Python ? Try out its Python binding!

danman

  • Hero Member
  • *****
  • Messages: 1121
    • Voir le profil
    • E-mail
Re : python-sfml2: version 1.1
« Réponse #3 le: Juin 24, 2012, 11:13:03 am »
Déjà, j'ai du remplacer Back par BackSlash dans window.pyx (SFML a jour).

Et apres :
>>> from sfml.window import sf
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.2/site-packages/sfml/__init__.py", line 2, in <module>
    from sfml.window import *
  File "window.pyx", line 855, in init sfml.window (src/sfml/window.cpp:19608)
NameError: dwindow
>>>
 
Pointilleur professionnel

Sonkun

  • Full Member
  • ***
  • Messages: 241
    • Voir le profil
Re : python-sfml2: version 1.1
« Réponse #4 le: Juin 24, 2012, 05:01:11 pm »
Cette version est basée sur la release candidate :) Je vois que tu es sur Linux mais quel distro tu utilises ? Archlinux il me semble ?
Interested in using SFML with Python ? Try out its Python binding!

danman

  • Hero Member
  • *****
  • Messages: 1121
    • Voir le profil
    • E-mail
Re : python-sfml2: version 1.1
« Réponse #5 le: Juin 24, 2012, 05:20:24 pm »
C'est ca, archlinux ;)
ah, oops :/ j'ai remis le paquet du dépot alors, mais j'ai toujours l'erreur.
Pointilleur professionnel

Sonkun

  • Full Member
  • ***
  • Messages: 241
    • Voir le profil
Re : python-sfml2: version 1.1
« Réponse #6 le: Juin 24, 2012, 06:33:41 pm »
Tu peux installer un packet .deb sur Archlinux ? Parce qu'il y a uniquement les paquets pour Ubuntu.

Sinon j'ai été voir à la ligne 855 des sources:

854   DELETE = dwindow.keyboard.Delete
855   ADD = dwindow.keyboard.Add
856   SUBTRACT = dwindow.keyboard.Subtract

Si dwindow est reconnu à la ligne 854, ya pas de raison qu'il ne soit plus à 855. As-tu bien téléchargé les sources ici: http://openhelbreath.net/python-sfml2/downloads/python-sfml2-1.1.tar.gz ?

Recompiles-tu avec Cython ?
Interested in using SFML with Python ? Try out its Python binding!

danman

  • Hero Member
  • *****
  • Messages: 1121
    • Voir le profil
    • E-mail
Re : python-sfml2: version 1.1
« Réponse #7 le: Juin 25, 2012, 12:13:26 am »
J'ai lancé : USE_CYTHON=True python setup.py build
donc je suppose que j'utilise cython avec python 3 ;) .

j'ai téléchargé via git ;) et non je ne peux pas installer un .deb (ou pas directement et facilement).
Pointilleur professionnel

Sonkun

  • Full Member
  • ***
  • Messages: 241
    • Voir le profil
Re : python-sfml2: version 1.1
« Réponse #8 le: Juin 25, 2012, 12:49:57 am »
Alors j'ai pas compris la phrase "j'ai remis le paquet du dépot alors".

C'était un peu le bordel récement dans le git car il y a une personne qui s'est joint au project. Aussi j'utilisais des branches pour séparer les versions au lieu d'utiliser des tags. Maintenant c'est en ordre et ça devrait aller mieux maintenant :)

Tu utilises bien Cython 0.16 ?

cython -V
« Modifié: Juin 25, 2012, 01:28:02 am par Sonkun »
Interested in using SFML with Python ? Try out its Python binding!

danman

  • Hero Member
  • *****
  • Messages: 1121
    • Voir le profil
    • E-mail
Re : python-sfml2: version 1.1
« Réponse #9 le: Juin 25, 2012, 07:13:56 am »
$ cython -V
Cython version 0.16
 

j'ai un paquet sfml dans les dépots de base d'archlinux
1 community/csfml 1.99.git20120504-1 [installed]
    C bindings for sfml
2 community/sfml 2.0rc1-1 [installed]
    A simple, fast, cross-platform, and object-oriented multimedia API

EDIT : mhhh, en fait j'ai regardé ligne 19806 dans window.cpp et il y avait BackSpace dans les commentaires => j'ai supprimé les .cpp et reconstruit le projet, et ça fonctionne désormais, désolé du temps perdu :/
« Modifié: Juin 25, 2012, 07:22:40 am par danman »
Pointilleur professionnel

Sonkun

  • Full Member
  • ***
  • Messages: 241
    • Voir le profil
Re : python-sfml2: version 1.1
« Réponse #10 le: Juin 25, 2012, 07:16:30 am »
Ca fonctionne maintenant ?
Interested in using SFML with Python ? Try out its Python binding!

danman

  • Hero Member
  • *****
  • Messages: 1121
    • Voir le profil
    • E-mail
Re : python-sfml2: version 1.1
« Réponse #11 le: Juin 25, 2012, 07:28:34 am »
Ca fonctionne maintenant ?

Oui ça fonctionne bel et bien, mais les event sont dans un namespace sfml et non sf pour moi, normal ?
from sfml.window import sf renvoit une erreur aussi.
Pointilleur professionnel

Sonkun

  • Full Member
  • ***
  • Messages: 241
    • Voir le profil
Re : python-sfml2: version 1.1
« Réponse #12 le: Juin 25, 2012, 01:26:57 pm »
Tu choisis le namespace que tu veux. Traditionellement tu importeras ton module comme ça:

import sfml as sf

Ca devrait charger toutes les classes/functions/variables dans "sf". Maintenant, le fait de taper ça, éxecute implicitement "import sfml.window" donc je comprend pas pourquoi "import sfml.window" ne marcherait pas, bizare!
Interested in using SFML with Python ? Try out its Python binding!

danman

  • Hero Member
  • *****
  • Messages: 1121
    • Voir le profil
    • E-mail
Re : python-sfml2: version 1.1
« Réponse #13 le: Juin 25, 2012, 01:46:28 pm »
Dans ce cas, ton exemple est faux  ;D
from sfml.window import sf # need only the window module ?
from sfml.audio import sf # need only the audio module ?

Tout fonctionne au poil, le design est vraiment pas mal niveau python !
Pointilleur professionnel