Nous avons besoin de deux images : une pour l'arrière-plan et une autre pour le curseur de la souris. Si vous n'avez pas accès à Internet actuellement, vous pouvez utiliser les fichiers image de votre disque dur ou les créer avec n'importe quel logiciel de retouche photo ou graphique. N'importe quelle image convient pour l'arrière-plan(background), à condition qu'elle mesure au moins 640 x 480 (au-delà, l'excédent sera rogné). Pour le curseur de la souris(mouse_cursor), il vous faudra une image plus petite qui s'intègre parfaitement à l'arrière-plan ; une taille idéale est de 80 x 80. Pour poursuivre sur le thème du fugu du premier chapitre, l'arrière-plan officiel sera une image de bols et de baguettes, et une image d'un fugu très brut pour le curseur de la souris. Les deux premières lignes définissent les noms de fichiers des images ; si vous utilisez des images différentes, remplacez lés par leur emplacement.
.png)
Il initialise chacun des sous-modules du paquet Pygame, qui peut charger les pilotes et interroger le matériel afin que Pygame soit prêt à utiliser tous les périphériques de votre ordinateur.
Vous pouvez initialiser uniquement les modules que vous souhaitez utiliser en appelant la fonction init dans chaque sous-module individuellement ; par exemple, pygame.sound.init() initialisera le module son.
Cela peut accélérer le démarrage du script, car seuls les modules réellement utilisés seront initialisés. Pour les jeux, vous aurez besoin de la plupart, voire de la totalité, des modules ; nous nous en tiendrons donc à cette fonction d'initialisation fourre-tout. Après l'avoir appelée, nous disposons de toute la puissance de Pygame !
L'affichage peut être une fenêtre sur votre bureau ou l'écran entier, mais vous y accédez toujours via un objet Surface de Pygame. L'appel à
pygame.display.set_mode dans notre script renvoie l'objet Surface représentant la fenêtre sur votre bureau. Il nécessite trois paramètres ; seul le premier est requis : il s'agit d'un tuple contenant la largeur et la hauteur de l'affichage que nous souhaitons créer. Notre fenêtre mesurera 640 × 480 pixels, ce qui est suffisant pour voir ce qui se passe, sans pour autant masquer une partie trop importante du bureau.
Le paramètre suivant que nous donnons à
set_mode est une valeur contenant les options utilisées lors de la création de l'affichage. Une option est une fonctionnalité qui peut être activée ou désactivée ; vous pouvez combiner plusieurs options avec l'opérateur OU binaire (|). Par exemple, pour créer une surface matérielle à double tampon, définissez le paramètre des options sur DOUBLEBUF|HWSURFACE.
La première chose que nous faisons avec notre surface nouvellement créée est d'appeler
set_caption dans le module d'affichage pour définir la barre de titre de la fenêtre Pygame. Nous définissons le titre sur (
frist game with pygame)
La fonction
load lit un fichier sur votre disque dur et renvoie une surface contenant les données de l'image. Ces objets sont du même type que notre écran, mais ils représentent des images stockées en mémoire et ne sont visibles qu'une fois affichés sur l'écran principal. Le premier appel à
pygame.image.load lit l'image d'arrière-plan, puis appelle immédiatement
convert, une fonction membre pour les objets Surface. Cette fonction convertit l'image au même format que notre écran, car il est plus rapide d'afficher des images à la même profondeur. Le curseur de la souris est chargé de la même manière, mais nous appelons
convert_alpha plutôt que
convert. En effet, l'image de notre curseur contient des informations alpha, ce qui signifie que certaines parties de l'image peuvent être translucides ou totalement invisibles. Sans ces informations, nous nous retrouvons limités à un carré ou un rectangle disgracieux ! Le chapitre suivant abordera plus en détail les formats alpha et image.

Cette boucle while a pour condition True (vrai), ce qui signifie qu'elle tournera en boucle jusqu'à ce que nous la quittions ou la forcions à quitter d'une autre manière. Tous les jeux ont une boucle similaire, qui se répète généralement une fois par rafraîchissement d'écran.
Un événement est la façon dont Pygame vous informe qu'un événement s'est produit en dehors de votre code. Les événements sont créés pour de nombreuses raisons, de l'appui sur une touche à la réception d'informations provenant d'Internet, et sont mis en file d'attente jusqu'à ce que vous les gériez.
La fonction get du module pygame.event renvoie tous les événements en attente, que nous parcourons ensuite dans une boucle for. Pour ce script, nous nous intéressons uniquement à l'événement QUIT, généré par Pygame lorsque l'utilisateur clique sur le bouton de fermeture de la fenêtre Pygame.
Ainsi, si l'événement est de type QUIT, nous appelons keep_going=False pour fermer le programme, et tous les autres événements sont ignorés. Dans un jeu, bien sûr, nous aurions à gérer un plus grand nombre d'événements.
Cette ligne utilise la fonction membre blit de l'objet Surface de l'écran, qui prend une image source (ici, notre arrière-plan de( 800 × 800) et un tuple contenant la position de destination.
L'arrière-plan ne bougera jamais ; nous souhaitons simplement qu'il recouvre toute la fenêtre Pygame. Nous effectuons donc un blit à la coordonnée (400, 400), qui correspond au center de l'écran.
Obtenir la position de la souris est simple et efficace ; le module pygame.mouse contient tout ce dont nous avons besoin pour utiliser la souris, y compris get_pos, qui renvoie un tuple contenant les coordonnées de la souris.
La première ligne décompose ce tuple en deux valeurs pour plus de commodité : x et y. Nous pourrions utiliser ces deux valeurs comme coordonnées lorsque nous déplacerions le curseur de la souris, mais cela placerait le coin supérieur gauche de l'image sous la souris, et nous souhaitons que le centre de l'image soit sous la souris.
Nous effectuons donc un petit calcul (pas de panique !) pour ajuster x et y afin que l'image de la souris soit déplacée de moitié vers le haut et de moitié vers la gauche. Ces coordonnées placent le centre de l'image juste sous le pointeur de la souris, ce qui est plus esthétique.
C'est du moins le cas pour l'image d'un poisson. Si vous souhaitez utiliser une image de pointeur plus classique, ajustez les coordonnées pour que la pointe se trouve sous les coordonnées réelles de la souris. Le blitting de l'image de la souris s'effectue de la même manière que celui de l'arrière-plan, mais nous utilisons les coordonnées calculées plutôt que (0, 0).
Cela suffit pour obtenir l'effet recherché, mais il reste encore une étape à franchir avant de pouvoir visualiser quoi que ce soit :
Lorsque vous créez une image à l'aide de blits à l'écran, vous ne les voyez pas immédiatement.
En effet, Pygame crée d'abord l'image dans un tampon arrière, un affichage invisible en mémoire, avant de l'afficher. Sans cette étape, l'utilisateur verrait les blits individuellement au fur et à mesure qu'ils se produisent, ce qui provoquerait un scintillement désagréable.
Pour les programmeurs de jeux vidéo, le scintillement est l'ennemi numéro un ! Nous voulons une animation fluide et convaincante. Heureusement, un appel à pygame.display.update() suffit pour garantir que l'image créée en mémoire s'affiche sans scintillement.