Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Introduction Pygame Importation et initialisation Dplacer une image Chimp - Ligne par ligne Introduction au module Sprite Introduction au module Surfarray Guide du dbutant Concevoir des jeux avec Pygame o Code final de Tom's Pong
Sections
[masquer]
1 Introduction Pygame 2 Histoire 3 Un avant-got 4 Python et les jeux 5 En conclusion 6 Vue d'ensemble des modules de Pygame
[modifier] Histoire
Pygame a commenc durant l't 2000. Connaissant le langage C depuis des annes, j'ai dcouvert Python et SDL en mme temps. Si vous tes dj familiaris avec Python, (qui en tait la version 1.5.2), vous pourriez avoir besoin d'une introduction SDL : Simple Directmedia Librairy. Cre par Sam Lantinga, SDL est une bibliothque multi-plateforme crite en C afin de grer le multimdia, elle est comparable DirectX. Elle a t utilise par des centaines de projets commerciaux et de jeux open-source. J'ai t impressionn par la propret et la simplicit des deux projets et j'ai vite ralis qu'associer Python et SDL tait une ide intressante. J'ai dcouvert un petit projet existant avec exactement la mme ide : PySDL. Cr par Mark Baker, PySDL tait une implmentation de SDL pour Python. L'interface tait propre mais je trouvais que ce code tait trop proche du C. La mort de PySDL m'a encourag lancer un nouveau projet. J'ai cherch faire un projet tirant rellement profit de Python. Mon but tait de permettre de raliser facilement des choses simples aussi bien que des choses plus complexes. Pygame a commenc en octobre 2000. Six mois plus tard, la version 1.0 faisait son apparition.
[modifier] Un avant-got
Je trouve que le meilleur moyen pour saisir le fonctionnement d'une nouvelle bibliothque est de directement regarder un exemple parlant. Dans les premiers jours avec Pygame, j'ai cr une animation de balle rebondissante en 7 lignes de code. Jetons un coup d'il une version simplifie de la mme chose.
2.
3. pygame.init()
4.
5.
6.
7. size = width, height = 320, 240
8.
9. speed = [2, 2]
10.
11. black = 0, 0, 0
12.
13.
14.
15. screen = pygame.display.set_mode(size)
16.
17.
18.
19. ball = pygame.image.load("ball.bmp")
20.
21. ballrect = ball.get_rect()
22.
23.
24.
25. while 1:
26.
27. for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit()
28.
29.
30.
31.
32.
33.
ballrect = ballrect.move(speed) if ballrect.left < 0 or ballrect.right > width: speed[0] = -speed[0] if ballrect.top < 0 or ballrect.bottom > height: speed[1] = -speed[1]
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45. screen.fill(black) screen.blit(ball, ballrect) pygame.display.flip()
46.
47.
48.
49.
50. (Si vous voulez essayer cet exemple, mettez une image nomme ball.bmp [archive] dans le mme dossier.)
C'est la faon la plus simple d'obtenir une animation de balle rebondissante. On voit au dbut du code l'importation et l'initialisation du module Pygame, ce qui ne change pas vraiment d'un programme un autre. Le import pygame importe toutes les modules disponibles de Pygame. L'appel de pygame.init() initialise chacun de ces modules. la ligne 8, une fentre graphique est cre par l'appel de pygame.display.set_mode(). Pygame et SDL nous simplifie la vie en slectionnant par dfaut les modes graphiques les plus adapts au matriel graphique. Vous pouvez outrepasser ce mode et Pygame compensera tout ce que le matriel ne peut pas faire. Pygame reprsente les images comme des objets Surface. La fonction display.set_mode() cre un nouvel objet Surface reprsentant le graphisme actuel afficher. Tous les dessins que vous faites sur cette surface seront visibles l'cran. la ligne 10, nous chargeons notre image de balle. Pygame supporte une grande varit de format d'image, comme la bibliothque SDL_image, les formats pris en compte sont : JPG, PNG, TGA et GIF. La fonction pygame.image.load() nous retourne la surface contenant l'image de balle. La surface gardera toutes les proprits (couleur cl et/ou de transparence alpha) du fichier d'origine. Aprs le chargement de
l'image de la balle, nous crons une variable ballrect. Pygame possde un objet trs utile nomm Rect qui reprsente une zone rectangulaire. Dans la partie du code charge de l'animation, nous verrons quel est le rle des objets Rect.
la ligne 13, notre programme est initialis et prt tre lanc. l'intrieur d'une boucle infinie qui gre les vnements gnrs par l'utilisateur, le code dessine et fait bouger la balle. Si vous tes familier avec la programmation de GUI (Graphical User Interface, ou Interface Utilisateur Graphique), vous avez certainement une notion de ce que sont les vnements. Avec Pygame, il s'agit de la mme chose. Lorsqu'un vnement se produit, le programme l'intercepte et agit en consquence. Le premier vnement pris en compte est l'action de quitter le programme. Si cet vnement survient, le programme agit en consquence en appelant la mthode sys.exit(). Ensuite vient le traitement de l'actualisation de la position de la balle. Les lignes 17 et 21 dplace la variable ballrect par sa vitesse courante. Si la balle s'est dplace l'extrieur de l'cran, la vitesse de la balle est inverse pour qu'elle reparte dans l'autre sens. a ne correspond pas exactement aux lois de Newton, mais ce n'tait pas l'objectif de ce premier programme de toute faon. la ligne 23, nous effaons l'cran en le remplissant de noir. Si vous n'avez jamais travaill avec des animations, ceci peut vous paratre trange. Vous pouvez vous demander : Pourquoi avons-nous besoin de tout effacer ? Pourquoi n'avons-nous pas juste la balle bouger sur l'cran ?, ceci n'est pas vraiment la manire de fonctionner des animations sur ordinateur. Une animation n'est rien de plus qu'une succession d'images, mais cette succession des images est tellement rapide que le cerveau humain voit une animation. screen n'est qu'une image que l'utilisateur voit. Si vous n'avez pas pris le temps d'effacer la balle de l'cran, nous pourrions voir la trace de la balle tout en continuant de voir la balle dans ses nouvelles positions. la ligne 24, nous dessinons l'image de la balle sur l'cran. Le dessin de ces images est gr par la mthode Surface.blit(). Un blit signifie que l'on copie les couleurs de chaque pixel d'une image sur une autre. Avec la mthode blit(), on prend une surface dite source que l'on applique sur la surface destination, le tout une position dfinie. La dernire chose dont nous avons besoin, est la mise jour de l'affichage visible. Pygame gre l'affichage avec un double tampon (double buffer). Quand nous avons fini de dessiner, nous faisons appel la fonction pygame.display.flip(). Ceci fait que tout ce que nous avons dessin sur la Surface screen devient visible. Cette mise en tampon fait que nous sommes sr de voir des images compltes dessine l'cran. Sans cette manipulation par tampon, l'utilisateur verrait l'image se dessiner au fur et mesure sur son cran.
Ceci conclut notre courte introduction Pygame. Pygame possde plusieurs modules pour grer les entres de la souris, du clavier et du joystick. Il est aussi possible de mixer des fichiers audio et de dcoder des flux musicaux. Avec les Surfaces, vous pouvez dessiner de simples formes (ronds, ...), les faire pivoter, et/ou les mettre une certaine chelle. Avec en plus un module pour des manipulations de pixels sur les images en temps rel avec les NumPy arrays. Pygame peut lire les videos MPEG et supporte les CDs audio. Pygame a
galement la capacit d'agir en tant que couche d'affichage multi-plateforme pour PyOpenGL. La plupart des modules de Pygame sont crits en C, peu sont en Python. Le site internet de Pygame possde une documentation de rfrence complte pour chaque fonction de Pygame et plusieurs tutoriaux pour tout niveau d'utilisateur. Les sources de Pygame viennent avec de nombreux exemples pour une comprhension facilite.
acclration logicielle. L'acclration n'est pas disponibles sur toutes les plateformes. Quand un jeu devient trop complexe, il doit souvent se rduire une seule plateforme. La SDL galement quelques limitations de conception, des choses comme le scrolling en plein cran peut rduire fortement la vitesse du jeu, jusqu' ce que ca devienne injouable. SDL n'est pas fait pour tous les types de jeux, mais souvenez-vous que des compagnies comme Loki ont utilis la SDL pour faire fontionner une grande varit de jeux. Pygame est un langage bas niveau quand il est utilis pour coder les jeux. Vous aurez rapidement besoin d'envelopper des fonctions communes pour votre environnement de jeu. C'est en grande partie d au fait qu'il n'y a rien dans Pygame pour ca. Votre programme a le contrle total sur tout. Vous constaterez que l'effet indsirable cela est que vous devrez crire beaucoup de code ennuyeux pour obtenir un cadre plus avanc. Vous aurez besoin d'une meilleure comprhension de ce que vous faite.
[modifier] En conclusion
Le dveloppement en vaut la peine, il y a quelque chose d'excitant dans le fait de pouvoir voir et interagir avec le code que vous avez crit. Pygame est actuellement utilise par plus de 30 projets. Plusieurs sont jouables ds maintenant. Vous allez tre surpris en visitant le site internet de Pygame [archive] en voyant ce que les autres utilisateurs sont capables de faire avec Python. Une chose qui a retenu mon attention, est que beaucoup de personnes se sont mises utiliser Python pour leurs premiers essais en dveloppement de jeu. Je peux voir pourquoi les jeux attirent de nouveaux programmeurs, mais il peut tre difficile de crer un jeu qui requiert une comprhension plus solide du langage. J'ai essay de soutenir ce type d'utilisateurs en crivant plusieurs exemples et tutoriels sur Pygame pour des personnes nouvelles ces concepts. Pour finir, mon conseil est de faire au plus simple. Je ne peux me soumettre une contrainte. Si vous prvoyez de crer votre premier jeu, sachez qu'il y a beaucoup apprendre. Mme un simple jeu est un challenge, et les jeux complexes ne sont pas ncessairement de bons jeux. Lorsque vous comprenez Python, vous pourrez utiliser Pygame pour crer un simple jeu en une ou deux semaines. Mais pour avoir un jeu compltement prsentable, il vous faudra de nombreuses heures de travail.
Cdrom [archive] Accder et contrler les lecteurs CD audio. Draw [archive] Dessiner des formes
partir de diffrents matriels d'entre (clavier, souris, ...), ainsi que du fentrage.
Image [archive] Charger, sauver et transfrer des images sur des surfaces. Mixer [archive] Charger et jouer des sons. Music [archive] Jouer des pistes musicales en streaming.
Movie [archive] Lecture de vido partir de film en MPEG. Pygame [archive] Fonctions de haut niveau pour le contrle de Pygame. Sprite [archive] Objets de haut niveau pour la reprsentation des images de jeu. Time [archive] Manipuler les temporisateurs et le taux d'image.
Sndarray [archive] Manipuler des chantillons de donnes audio. Surfarray [archive] Manipuler des donnes de pixel d'image.
Surface [archive] Objets pour des images et l'cran. Transform [archive] Redimensionner et dplacer des images.
Pygame (livre)