Télécharger puis installer la distribution Python 3.2 sur le site Python.org
Télécharger puis installer l'installateur de pygame pour Python 3.2 sur la page de download de pygame
Télécharger puis installer la distribution 2015 de Pyzo depuis la page de download de Pyzo
Pour utiliser Pygame dans Pyzo, il faut d'abord changer le shell par défaut de Pyzo qui est celui livré avec la distribution. Pour celà, il faut sélectionner l'option Configuration du shell dans le menu shell
Paramétrage du shell
pip install pygame-1.9.2a0-cp35-none-win32.whl
Dans le partage groupe /ISN du réseau interne du lycée ou dans l'archive fournie par le professeur, se trouvent un répertoire tutorielpygame_ avec les fichiers suivants :
tutoriel-pygame.py
, contenant le code source du programme de démonstrationtutoriel-pygame.html
, contenant le document d'accompagnement au format HTMLtutoriel-pygame.pdf
, contenant le document d'accompagnement au format pdfISN-DM4-pygame-2015.pdf
, qui comporte trente trois pages dont des énoncés d'exercices, des exemples de codes mais aussi un mini-cours sur pygame et sur la Programmation Objet. Le sujet et toutes les ressources associées (modèles de codes, images etc ...) sont par ailleurs regroupés dans un répertoire dédié.tutoriel-pygame-nup.pdf
, contenant le document d'accompagnement au format pdf avec 2 pages par feuilleslogo-parc.png
, un fichier image avec le logo du lycée au format PNGtest-pygame-eleve.py
C:\Python34
puis exécuter le fichier en tant que scripttutoriel-pygame.py
et les exécuter séparémentISN-DM4-pygame-2015.pdf
.import pygame
from pygame.locals import *
pygame.init()
#creation de l'écran (qui est une surface pygame)
(LARGEUR, HAUTEUR) = (800, 600)
ecran = pygame.display.set_mode((LARGEUR, HAUTEUR))
pygame.display.set_caption("Tutoriel Pygame")
#récupération du rectangle de positionnement de l'écran
ecran_rect = ecran.get_rect()
#création d'un fonds
fond = pygame.Surface((LARGEUR, HAUTEUR))
#remplissage du fond avec une couleur (vert pale)
fond.fill((180, 230, 180))
#D'abord on convertit les pixels du logo au meme format que les pixels de l'écran
fond = fond.convert()
#blitter le fond sur l'écran
ecran.blit(fond, ecran_rect)
#mise à jour de l'affichage (sinon l'écran reste noir)
pygame.display.flip()
logo = pygame.image.load('logo-parc.png')
#reglage de la couleur transparente avec la couleur du bord
couleur_bord = logo.get_at((0,0))
logo.set_colorkey(couleur_bord)
#recuperation du rectangle de positionnement de l'image
logo_rect = logo.get_rect()
#positionnement du logo au centre de l'écran
logo_rect.center = ecran_rect.center
#D'abord on convertit les pixels du logo au meme format que les pixels de l'écran
logo = logo.convert()
ecran.blit(logo, logo_rect)
#mise à jour de l'affichage (sinon l'écran reste noir)
pygame.display.flip()
#variable de décompte de points
#un point supplémentaire lorsqu'on clique sur le logo
points = 0
#création d'une fonte pour l'affichage du score
score_font = pygame.font.Font(None, 30)
couleur_font = (255, 0, 0) #couleur de la fonte (ici rouge)
#surface de score
score_surface = score_font.render("Score : {:6d} points".format(points), 1, couleur_font)
#rectangle de positionnement de la surface de fonte
score_rect = score_surface.get_rect()
score_rect.bottomright = ecran_rect.bottomright
#blit de la surface de score sur l'écran d'affichage
ecran.blit(score_surface, score_rect)
#mise à jour de l'affichage
pygame.display.flip()
#création d'un chronometre
chrono = pygame.time.Clock()
#declenchement du chrono
chrono.tick()
#vitesse de déplacement du logo (ici 1 pixel vers la droite)
vitesse = (1,0)
#Boucle externe d'animation
continuer = True
while continuer:
#Controle de la vitesse maximale à 300 frame par secondes
chrono.tick(300)
#boucle interne de récupération des événements
for event in pygame.event.get():
if event.type == QUIT:
continuer = False
if event.type == MOUSEBUTTONDOWN:
if logo_rect.collidepoint(pygame.mouse.get_pos()):
points += 1
#modification du score
score_surface = score_font.render("Score : {:6d} points".format(points), 1, couleur_font)
#mise à jour des sprites
#déplacement du logo de gauche à droite en boucle
logo_rect = logo_rect.move(vitesse)
if logo_rect.left >= LARGEUR:
logo_rect.right = 0
#blitter le fond, le score et le logo à sa nouvelle position sur l'écran
ecran.blit(fond, ecran_rect)
ecran.blit(logo, logo_rect)
ecran.blit(score_surface, score_rect)
#mise à jour de l'affichage
pygame.display.flip()
#Sortie de la boucle d'animation : on quitte pygame
pygame.quit()
Partie 2 : écran d'affichage vide
Partie 3 : fonds blitté sur écran d'affichage
Parties 4 et 5 : logo et fonds blittés sur écran d'affichage
Parties 6 et 7 : logo, fonds et score blittés sur écran d'affichage
Partie 8 : animation