Avec quelques amis, nous avons un projet de jeu en 2D qui nécessite bien entendu la gestion des événements à la souris et au clavier.
J'ai commencé par utiliser la bibliothèque SFML (PySFML avec Python donc) mais c'est comme qui dirait pénible de l'utiliser, et puis j'ai l'impression que je ne pourrais faire ce que je veux avec.
J'aimerais par exemple créer un thread qui surveille les I/O (clavier souris en gros) et qui vient chatouiller telle ou telle fonction en fonction de ce qui a été activé (clique gauche sur telle vue à tel endroit, appui d'une touche ect ect ect)
Alors soit je suis une branque, et le seul moyen que j'ai trouvé pour y arriver c'est de lancer un thread avec python contenant une boucle infinie (ou du moins apparenté) qui vient lire la pile des événements, ou alors c'est pas loin d'être le seul moyen qui permet de le faire.
Dans ce cas je souhaiterais que vous me donniez votre avis sur le module PyGame, ou même d'autres modules, voir carrément d'autres bibliothèques utilisables avec un langage comme le C ou C++, ou même tout ça à la fois.
salut,
je suis pygame addict je n'ai donc pas un avis objectif
un programme bien construit, devrait, en général, pouvoir se passer de thread.
si je comprends bien, tu veux que la partie gestion des events soit indépendante du reste ?
tu veux faire une lib maison généraliste pour la gestion des events ?
en fait, il y a plein de façons de coder un jeu ...
quel genre de jeu veux-tu faire ?
J'aimerais par exemple créer un thread qui surveille les I/O (clavier souris en gros) et qui vient chatouiller telle ou telle fonction en fonction de ce qui a été activé (clique gauche sur telle vue à tel endroit, appui d'une touche ect ect ect)
Alors soit je suis une branque, et le seul moyen que j'ai trouvé pour y arriver c'est de lancer un thread avec python contenant une boucle infinie (ou du moins apparenté) qui vient lire la pile des événements, ou alors c'est pas loin d'être le seul moyen qui permet de le faire.
Quelle que soit la bibliothèque graphique que tu vas utiliser, c'est exactement comme ça qu'elle fonctionnera intrinsèquement, sauf que tu n'auras pas besoin de coder toi-même la gestion des threads puisque ce code est déjà contenu dans la bibliothèque graphique.
Typiquement, pour un jeu, l'approche par défaut est de faire ce genre de boucle infinie, que l'on appelle, pour le coup, une boucle événementielle. Que tu travailles avec Pygame ou PySFML, cela reviendra au même sur cet aspect.
Ce qui va motiver ton choix, c'est plutôt cette question : cherches-tu la simplicité d'utilisation ou as-tu besoin de performances de boulzor ?
Si ton jeu inclut un scrolling, par exemple (ce qui implique de redessiner tout l'écran à chaque frame, comme, mettons, un Mario-like avec un fond complexe), il vaut mieux te pencher vers PySFML, qui dépend d'OpenGL et t'offrira les perfs nécessaires. Si ton jeu n'a pas besoin de grosses performances (au pire, de nombreux petits sprites qui bougent indépendamment les uns des autres, mais un fond qui reste fixe la plupart du temps, comme un bomberman, par exemple), Pygame est tout à fait adaptée, et a le mérite d'être plus simple d'accès et plus "pythonique" (elle respecte notamment la PEP-8, contrairement à PySFML qui est un binding "sauvage").
Merci bien NoHaR. SFML est une bibliothèque qui me convient parfaitement, mais le binding python n'étant pas vraiment au point, je vais l'utiliser en C++.
Pygame est compatible Mac mais seulement avec Python 2.x actuellement. Il y a un mois que la version 3.x devait sortir dans une ou deux semaines d'ailleurs...
Par contre je vois que PySFML semble correspondre, non ? Il y a un Full SDK compatible Mac et Python 3 est mentionné (http://www.sfml-dev.org/download.php).
Mais est-ce que cette librairie est toujours en mouvement ? Quand je l'utilisais en C, je me rappelle qu'on m'avait déconseillé son utilisation du fait de ses trop rares mises à jour. La dernière news date de mai...
Je ne vois pas où est le problème que la dernière MAJ soit de _fin_ main 2010 alors qu'on peut voir sur le forum que beaucoup de bugs sont en fait des erreurs d'utilisation. Si on regarde sur le dépôt SVN dans branches, c'est encore actif.
Et quand bien même ça ne serait pas actif, la bibliothèque fonctionne bien et le forum est actif, son développeur aussi.
SFML 1.x est effectivement assez calme depuis quelque temps car la branche 2 est en préparation avec, de ce que j’ai vu, des avancées importantes (j’ai notamment été conquis par l’installation d’un module FindSFML pour CMake ).
Bon, j'ai vraiment cherché partout, j'ai trouvé aucune librairie compatible Python 3 / Mac spécialisée dans le développement de jeu.
Si quelqu'un en connaît une, je suis preneur...
Choisir entre PyGame, PySFML, ou autre
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Python c'est bon, mangez-en.