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.
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 !
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)
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.
Aucun commentaire:
Enregistrer un commentaire