• {0} Easy|{1} Medium|{2} Hard

Free online content available in this course.

You can get support and mentoring from a private teacher via videoconference on this course.

Got it!

Last updated on 7/20/15

Présentation de Pygame

Log in or subscribe for free to enjoy all this course has to offer!

Salut à tous ! :)
Si vous lisez ceci, ça y est, vous ne pouvez plus échapper à Pygame ! :diable:

Après Python, vous vous attaquez à une des nombreuses bibliothèques disponibles pour ce langage !
Pour comprendre ce tutoriel et utiliser cette bibliothèque, vous devez avoir déjà quelques programmes Python en mode console derrière vous, et être familier avec les techniques de programmation. Je ne peux que vous conseiller, si durant la lecture vous butez sur une ligne de code ou pour vous rafraîchir la mémoire, de jeter un oeil sur le tutoriel Python du Site du Zéro ! :)

Bon, on commence ? :-°
Je vous propose tout d'abord de regarder Pygame de plus près, et de faire le point sur le rôle d'une interface graphique, pour un langage comme Python !
Nous verrons un peu plus loin comment l'installer sur votre machine et comment l'utiliser dans votre code !

Pygame en détails

L'histoire de Pygame commence en l'an 2000, lorsque Pete Shinners découvre Python et SDL.
Python, j'espère que vous avez une idée de ce dont il peut s'agir :lol: , SDL parcontre, c'est moins sûr !
Si vous avez suivi le cours de Matéo sur le C, vous en aurez déjà entendu parler, et l'aurez même utilisée...

SDL, pour Simple Directmedia Library, est une bibliothèque libre multi-plateformes permettant la gestion du multimédia dans la programmation. La SDL est écrite en C, mais est utilisable avec un grand nombre de langages, comme le ... C/C++ :-° , Pascal, Perl ou encore ... Python !

Parmis ses utilisations, on peut retenir :

  • L'affichage vidéo 2D

  • La gestion de l'audio

  • La gestion de périphériques de commandes (clavier, souris...)

Et vous en conviendrez, pour coder un jeu, ça sert pas mal !
Je vous laisse imaginer tous les jeux que vous allez pouvoir créer avec tout ça... :) Tetris, Super Mario Bros, Pokémon (eh oui ! :lol: ), Zelda...
Je parle des versions 2D, n'allez pas me chercher votre dernier Zelda Wii !

Revenons à notre cher Pete, qui, lorsqu'il a découvert Python et SDL, s'est dit qu'il serait peut-être bon de combiner les deux. Il voulait ainsi proposer aux codeurs Python une bibliothèque multimédia aussi riche que celle du C, tout en conservant ce qui fait l'âme de Python, la simplicité.

Image utilisateur

Pygame est donc l'adaptation de la SDL au service de Python, mais est aussi constitué de quelques ajouts et modifications de son auteur.
Cette bibliothèque est assez intuitive et constitue un très bon moyen de se lancer dans la programmation graphique avec Python. :)

Il faut savoir que Pygame ne fait pas partie des bibliothèques standards de Python, qu'elle est donc développée indépendamment et qu'il est nécessaire de la télécharger et de l'installer en plus de Python pour pouvoir l'utiliser. Celle-ci est gratuite et libre, sous licence GNU LGPL, ça nous arrange !

On peut dire que Pygame est une interface graphique pour Python. Ce terme est assez facile à comprendre, mais nous allons tout de même voir qu'il y a quelques choses à connaître sur les interfaces graphiques avant de se lancer :)

Installation de Pygame

Ca y est ! Enfin du concret à vous mettre sous la dent ! :lol:
L'installation !

Vous devez d'abord télécharger le fichier correspondant à votre système d'exploitation et à votre version de Python sur le site de Pygame. Normalement Python 3.x si vous avez suivi le tutoriel du Site du Zéro. 11
Page de téléchargement : http://www.pygame.org/download.shtml

Pour Windows

Choisissez le fichier qui vous correspond dans la liste "Windows", qui devrait ressembler à celà :

Image utilisateur

Cette section nous indique qu'il est nécessaire de désinstaller toutes les versions précédentes de Pygame, avant d'en installer une nouvelle, pas de problème normalement ! :)

Le fichier qui nous intéresse est donc ici celui compatible avec Python 3, soit le dernier de la liste. :)
Téléchargez le fichier msi qui contient tout ce dont vous avez besoin pour coder avec Pygame, et lancez-le !

Lors de l'installation, vous rencontrerez une fenêtre comme celle-ci :

Image utilisateur

Pygame devrait repérer Python sur votre machine (Python 3.1 from registry sur l'image). Si ce n'est pas le cas, vous aurez seulement la seconde ligne, précisez alors le répertoire d'installation de Python sur votre machine, et le tour est joué ! :D

Une fois installé sur votre machine, vous êtes prêt à travailler ! :D
Pour vérifier que l'installation a bien été effectuée, vous pouvez vous rendre dans l'interpréteur Python et taper :

import pygame

Si vous ne rencontrez aucune erreur, Pygame est installé !

Pour Linux

Je vais guider l'installation par les sources, mais vous êtes libre, si vous le souhaitez, d'installer le paquet de votre distribution, avec votre gestionnaire qui gérera les dépendances... :)

La section de la page qui nous intéresse est celle-ci :

Image utilisateur

Vous pouvez télécharger l'une ou l'autre des archives, cela revient exactement au même ! :)

Téléchargez le fichier contenant les sources et décompressez-le.
Avant l'installation, assurez-vous d'avoir installé les dépendances : libsdl1.2debian-all (dépôt Universe), libsdl1.2-dev, libsdl-image1.2, libsdl-image1.2-dev, libsdl-ttf2.0-0, libsdl-ttf2.0-dev, libsdl-mixer1.2, libsdl-mixer1.2-dev, libsmpeg0, libsmpeg0-dev, libpng-dev et libjpeg-dev !

Voici la commande pour les installer sous Ubuntu :

sudo apt-get install libsdl1.2debian-all libsdl1.2-dev libsdl-image1.2 libsdl-image1.2-dev libsdl-ttf2.0-0 libsdl-ttf2.0-dev libsdl-mixer1.2 libsdl-mixer1.2-dev libsmpeg0 libsmpeg0-dev libpng libjpeg

Une fois les dépendances installées, ouvrez un terminal. Rendez-vous dans le dossier décompressé et tapez :

python3 setup.py build

Si vous ne rencontrez aucune erreur, passez en root et tapez :

python3 setup.py install

Et c'est bon ! Vous êtes prêt à travailler avec Pygame ! :D
Pour vérifier que l'installation a bien été effectuée, vous pouvez vous rendre dans l'interpréteur Python et taper :

import pygame

Si vous ne rencontrez aucune erreur, Pygame est installé !

Les interfaces graphiques

Dans la plupart des langages de programmation, on commence par coder des programmes qui se lanceront en mode console. Si vous avez suivi le tutoriel du Site du Zéro sur le Python, c'est votre cas. :D
Programmer de cette façon permet d'apprendre tous les aspects du langage sans avoir à se soucier de l'affichage, ni du son. Pas de design, seulement du code, en somme.
Un programme en mode console peut être lancé sur un serveur par exemple, où l'on privilégie la performance à une interface graphique qui serait inutile.

Des programmes en mode console et graphique peuvent proposer les mêmes fonctions. En effet, l'interface graphique, c'est seulement une "surcouche" ajoutée au langage, permettant d'afficher des fenêtres, des images ou des boutons par exemple ! :)

Cependant, les modes console et graphique ont chacun leurs avantages et leurs inconvénients.
Le principal inconvénient du mode graphique par rapport au mode console est la perte de performance dûe au supplément de calcul pour afficher une fenêtre.
Parcontre, son avantage est son intuitivité et la possibilité d'afficher des images, de travailler un design, par rapport à un mode console qui nécessite un apprentissage pour l'utilisation, et qui avouont-le n'est pas très attirant...

Qui est le geek qui a dit "Si !" ? :lol:

Exemple, un même programme en mode console, puis graphique :

Image utilisateur
Image utilisateur
Différences de conception

Jusqu'à maintenant, vous avez codé des scripts qui s'exécutaient au fur et à mesure du fichier.
Par exemple :

  • on demande le nom

  • on attend l'entrée du nom

  • on demande l'âge

etc... Vous suivez ? :)

Pour une interface graphique, nous allons voir que c'est différent.
En effet, le programme ne "pilote" plus les évènements, mais il est cette fois "piloté" par ceux-ci. Il est en quelque sorte au service de l'utilisateur, là ou le programme textuel guide étape par étape...

Pour que vous compreniez mieux, je vais prendre un exemple. :)

Imaginez un programme affichant un personnage au milieu d'un champs. Vous pouvez appuyer sur Haut, Bas, Gauche et Droite pour le faire bouger, ou encore Echap pour fermer la fenêtre.

Voyons les différentes étapes de l'exécution de ce programme...

  • Affichage du personnage dans le champs

  • Attente de la pression d'une touche

  • Déplacement correspondant

  • ...

  • Attente de la pression d'une touche

  • Déplacement correspondant

  • ...

Ce programme doit être codé pour attendre la pression d'une touche, et si cet touche correspond à une touche de mouvement, lancer la fonction précisée pour celui-ci (deplace_haut(), par exemple).
Ce programme se lance, puis attend patiemment qu'on lui donne un ordre, et agit différemment selon l'ordre donné !

Cette attente est généralement codée à l'aide d'une boucle, qui s'effectue tant qu'aucun événement ne se produit.
C'est une différence qui influe sur la manière de coder lorsqu'on a une interface graphique à gérer, mais ne vous inquiétez pas, c'est plutôt naturel, et on y va doucement ! :D

Ca y est, vous possédez maintenant tous les outils pour créer une fenêtre, la contrôler, afficher des images et jouer des sons en Python !
Reste maintenant à savoir comment utiliser cette bibliothèque, parce que nos jeux ne viendront pas tout seuls ! :D
Dans la prochaine partie nous afficheront nos premières fenêtres et essayerons de comprendre la méthode d'affichage de SDL et Pygame !

Example of certificate of achievement
Example of certificate of achievement