# pyg0010_bases.py
# Référence : https://openclassrooms.com/courses/interface-graphique-pygame-pour-python/premieres-fenetres
# Premier essais avec Pygame en Python 3
# Gestion d'événements :
# https://openclassrooms.com/courses/interface-graphique-pygame-pour-python/gestion-des-evenements-1
'''
Liste des modules de Pygame :
display
mixer # pour la gestion du son
draw
event
image
mouse
time
'''
import pygame
from pygame.locals import *
# Initialisation des modules de Pygame
pygame.init()
# Création d'une fenêtre graphique de Pygame
##fenetre = pygame.display.set_mode((640, 480))
# Permet de rendre la fenêtre de taille ajustable.
fenetre = pygame.display.set_mode((640,480), RESIZABLE)
# Une image pour le fond de la fenêtre
fond = pygame.image.load("images/background_herbe.jpg").convert()
perso1 = pygame.image.load("images/perso_1.png").convert_alpha()
# Ne fonctionne pas !???
perso1.set_colorkey((255,255,255)) #Rend le blanc (valeur RGB : 255,255,255) de l'image transparent
# Affiche l'image dans la fenêtre
fenetre.blit(fond, (0, 0))
# Affiche le personnage au-dessus de l'herbe
fenetre.blit(perso1, (200, 200))
# Actualise la fenêtre
pygame.display.flip()
nPosX = 200 # Position en X de la personne
nPosY = 200 # Position en Y de la personne
pygame.key.set_repeat(400, 30)
# Variable qui continue la boucle si = 1, stoppe si = 0
continuer = 1
# ================================================
# Boucle principale
while continuer:
# Boucle sur tous les événements gérés par Pygame
for event in pygame.event.get():
if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:
# La fenêtre a été fermée ou La touche ESC a été pressée.
continuer = 0 # Indique de sortir de la boucle.
if event.type == KEYDOWN: # KEYUP existe aussi
if event.key == K_RIGHT: nPosX += 20
if event.key == K_LEFT: nPosX -= 20
if event.key == K_UP: nPosY -= 20
if event.key == K_DOWN: nPosY += 20
fenetre.blit(fond, (0, 0))
fenetre.blit(perso1, (nPosX, nPosY))
# Actualise la fenêtre
pygame.display.flip()
pygame.display.quit() # ferme la fenêtre, c.f. https://www.pygame.org/docs/ref/display.html
pygame.quit() # quitte pygame, c.f. https://www.pygame.org/docs/ref/pygame.html
# pyg0020_bases_mouvements.py
# Référence : https://openclassrooms.com/courses/interface-graphique-pygame-pour-python/premieres-fenetres
# Premier essais avec Pygame en Python 3
# Gestion d'événements :
# https://openclassrooms.com/courses/interface-graphique-pygame-pour-python/gestion-des-evenements-1
# TP-DK Labyrinthe !
# https://openclassrooms.com/courses/interface-graphique-pygame-pour-python/tp-dk-labyrinthe
'''
Liste des modules de Pygame :
display
mixer # pour la gestion du son
draw
event
image
mouse
time
'''
import pygame
from pygame.locals import *
import os
# Pour positionner la fenêtre Pygame.
#os.environ['SDL_VIDEO_WINDOW_POS'] = '20,100'
os.environ['SDL_VIDEO_WINDOW_POS'] = '%d,%d' % (120, 200)
# Information sur le display
# https://www.pygame.org/docs/ref/display.html
# Initialisation des modules de Pygame
pygame.init()
# Création d'une fenêtre graphique de Pygame
##fenetre = pygame.display.set_mode((640, 480))
# Permet de rendre la fenêtre de taille ajustable.
fenetre = pygame.display.set_mode((640,480), RESIZABLE)
# Une image pour le fond de la fenêtre
fond = pygame.image.load("images/background_herbe.jpg").convert()
perso1 = pygame.image.load("images/perso_1.png").convert_alpha()
# Ne fonctionne pas !???
perso1.set_colorkey((255,255,255)) #Rend le blanc (valeur RGB : 255,255,255) de l'image transparent
# Affiche l'image dans la fenêtre
fenetre.blit(fond, (0, 0))
# Affiche le personnage au-dessus de l'herbe
fenetre.blit(perso1, (200, 200))
# Actualise la fenêtre
pygame.display.flip()
nPosX = 200 # Position en X de la personne
nPosY = 200 # Position en Y de la personne
# Pour avoir un autorepeat si une touche est pressée.
pygame.key.set_repeat(10, 3) # répétition de la touche toutes les ... [ms]
# Variable qui continue la boucle si = 1, stoppe si = 0
continuer = 1
# ================================================
# Boucle principale
while continuer:
# Boucle sur tous les événements gérés par Pygame
for event in pygame.event.get():
if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:
# La fenêtre a été fermée ou La touche ESC a été pressée.
continuer = 0 # Indique de sortir de la boucle.
if event.type == KEYDOWN: # KEYUP existe aussi
# Change les coordonnées de la position de la personne
if event.key == K_RIGHT: nPosX += 1
if event.key == K_LEFT: nPosX -= 1
if event.key == K_UP: nPosY -= 1
if event.key == K_DOWN: nPosY += 1
# Affiche le fond, puis la personne par-dessus
fenetre.blit(fond, (0, 0))
fenetre.blit(perso1, (nPosX, nPosY))
# Actualise la fenêtre
pygame.display.flip()
if event.type == MOUSEBUTTONDOWN: # Un bouton de la souris pressé
if event.button == 1: # Boutton gauche pressé
# Change les coordonnées de la position de la personne
nPosX = event.pos[0] # Coordonnées du pointeur de souris
nPosY = event.pos[1]
if event.button == 3: # Boutton droit pressé
# Change les coordonnées de la position de la personne
nPosX = event.pos[0] - perso1.get_width()
nPosY = event.pos[1] - perso1.get_height()
# Affiche le fond, puis la personne par-dessus
fenetre.blit(fond, (0, 0))
fenetre.blit(perso1, (nPosX, nPosY))
# Actualise la fenêtre
pygame.display.flip()
if event.type == MOUSEMOTION: # La souris a bougé
if event.buttons[0] == 1: # Boutton gauche pressé
# Change les coordonnées de la position de la personne
nPosX = event.pos[0] # Coordonnées du pointeur de souris
nPosY = event.pos[1]
##if event.buttons[1] == 1: # Boutton du milieu pressé
if event.buttons[2] == 1: # Boutton du milieu pressé
# Change les coordonnées de la position de la personne
nPosX = event.pos[0] - perso1.get_width()
nPosY = event.pos[1] - perso1.get_height()
# Affiche le fond, puis la personne par-dessus
fenetre.blit(fond, (0, 0))
fenetre.blit(perso1, (nPosX, nPosY))
# Actualise la fenêtre
pygame.display.flip()
pygame.display.quit() # ferme la fenêtre, c.f. https://www.pygame.org/docs/ref/display.html
pygame.quit() # quitte pygame, c.f. https://www.pygame.org/docs/ref/pygame.html
# pyg0027_bases_mouvements.py
# Référence : https://openclassrooms.com/courses/interface-graphique-pygame-pour-python/premieres-fenetres
# Premier essais avec Pygame en Python 3
# Gestion d'événements :
# https://openclassrooms.com/courses/interface-graphique-pygame-pour-python/gestion-des-evenements-1
# TP-DK Labyrinthe !
# https://openclassrooms.com/courses/interface-graphique-pygame-pour-python/tp-dk-labyrinthe
#
# Lancement de projectiles.
# Dans pyg0022_bases_mouvements.py, il est presque impossible de lancer un seul projectle à la fois.
# Ici, on gère cela en testant que la touche espace K_SPACE a été relachée avant de relancer un projectil.
# Dans pyg0023_bases_mouvements.py, lorsque l'on presse sur la touche espace, le personnage s'arrête.
# Ici, il s'arrête si on arrête de presser sur les flèches.
# Dans pyg0024_bases_mouvements.py, l'ensemble des projectiles est géré par un tableau.
# Dans pyg0025.py, un projectile est un objet. Une fois créé, le reste du programme l'ignore,
# c'est l'objet lui-même qui gère son déplacement et sa destruction finale.
# Cela pause des problèmes d'affichage, ainsi que de gestion en fin de partie.
# Les problèmes de gestion de fin de partie peuvent se régler à l'aide d'un compteur.
# Les objets sont référencés dans une liste.
'''
Liste des modules de Pygame :
display
mixer # pour la gestion du son
draw
event
image
mouse
time
'''
import pygame
from pygame.locals import *
import os
# ===== Variables globales ======================
# Variable qui continue la boucle si = 1, stoppe si = 0
continuer = 1
nPosX = 200 # Position en X du personnage
nPosY = 200 # Position en Y du personnage
nDirX = 0 # Sens de déplacement du personnage selon X. 0 => il ne bougle pas
nDirY = 0 # Sens de déplacement du personnage selon Y. 0 => il ne bougle pas
fLanceOK = True # Indique que l'on peut lancer un projectile
glaProjectiles = [] # Le tableau des projectiles
glnCount = 0 # Juste pour compter le nombre de projectiles créés.
class Projectile:
#################
'''Classe des projectiles, pour les rendre autonomes'''
def __init__(self, nPosX, nPosY):
#""""""""""""""""""""""""""""""""
global glnCount
glnCount += 1
self.nCount = glnCount # Indique le numéro du projectile
self.nProjPosX = nPosX
self.nProjPosY = nPosY
def mouvement(self):
#"""""""""""""""""""
# Monte le projectile de .. pixels
self.nProjPosY -= 1.8
fenetre.blit(projectile, (self.nProjPosX, self.nProjPosY))
# Si le projectile a atteint le haut de l'écarn, il est détruit
if (self.nProjPosY < -20):
# Destruction de l'objet projectile
print('Fin de', self.nCount)
glaProjectiles.remove(self)
# Pour positionner la fenêtre Pygame.
#os.environ['SDL_VIDEO_WINDOW_POS'] = '20,100'
os.environ['SDL_VIDEO_WINDOW_POS'] = '%d,%d' % (120, 200)
# Information sur le display
# https://www.pygame.org/docs/ref/display.html
# Initialisation des modules de Pygame
pygame.init()
# Création d'une fenêtre graphique de Pygame
##fenetre = pygame.display.set_mode((640, 480))
# Permet de rendre la fenêtre de taille ajustable.
fenetre = pygame.display.set_mode((640,480), RESIZABLE)
# Une image pour le fond de la fenêtre
fond = pygame.image.load("images/background_herbe.jpg").convert()
perso1 = pygame.image.load("images/perso_1.png").convert_alpha()
projectile = pygame.image.load("images/BouleBleue.png").convert_alpha()
# Ne fonctionne pas !???
perso1.set_colorkey((255,255,255)) #Rend le blanc (valeur RGB : 255,255,255) de l'image transparent
# Affiche l'image dans la fenêtre
fenetre.blit(fond, (0, 0))
# Affiche le personnage au-dessus de l'herbe
fenetre.blit(perso1, (200, 200))
# Actualise la fenêtre
pygame.display.flip()
# Pour avoir un autorepeat si une touche est pressée.
pygame.key.set_repeat(10, 3) # répétition de la touche toutes les ... [ms]
# Pour définir une vitesse d'exécution,
# en limitant en attendant qu'un certain temps se soit écoulé avant de continuer.
myClock = pygame.time.Clock()
# ================================================
# Boucle principale
while continuer:
# Boucle sur tous les événements gérés par Pygame
for event in pygame.event.get():
if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:
# La fenêtre a été fermée ou La touche ESC a été pressée.
continuer = 0 # Indique de sortir de la boucle.
if event.type == KEYDOWN: # KEYUP existe aussi
# Change les coordonnées de la position de la personne
if event.key == K_RIGHT: nDirX = 4
if event.key == K_LEFT: nDirX = -4
if event.key == K_UP: nDirY = -4
if event.key == K_DOWN: nDirY = 4
if (event.key == K_SPACE) and fLanceOK:
fLanceOK = False # pour ne pas permettre de lancer plusieurs projecties en même temps
# Adjonction d'un projectile à la liste des projectiles
glaProjectiles.append(Projectile(nPosX + 20, nPosY))
if event.type == KEYUP: # pour ne pas permettre de lancer plusieurs projectiles en même temps
if event.key == K_RIGHT: nDirX = 0
if event.key == K_LEFT: nDirX = 0
if event.key == K_UP: nDirY = 0
if event.key == K_DOWN: nDirY = 0
if (event.key == K_SPACE): fLanceOK = True
if event.type == MOUSEBUTTONDOWN: # Un bouton de la souris pressé
if event.button == 1: # Boutton gauche pressé
# Change les coordonnées de la position de la personne
nPosX = event.pos[0] # Coordonnées du pointeur de souris
nPosY = event.pos[1]
pixColor = fenetre.get_at((nPosX, nPosY)) # détection de la couleur à l'endroit indiqué
print("Couleur =", pixColor) # c.f. http://www.pygame.org/docs/ref/surface.html#Surface.get_at
if event.button == 3: # Boutton droit pressé
# Change les coordonnées de la position de la personne
nPosX = event.pos[0] - perso1.get_width()
nPosY = event.pos[1] - perso1.get_height()
# Actualise la fenêtre
pygame.display.flip()
if event.type == MOUSEMOTION: # La souris a bougé
if event.buttons[0] == 1: # Boutton gauche pressé
# Change les coordonnées de la position de la personne
nPosX = event.pos[0] # Coordonnées du pointeur de souris
nPosY = event.pos[1]
##if event.buttons[1] == 1: # Boutton du milieu pressé
if event.buttons[2] == 1: # Boutton du milieu pressé
# Change les coordonnées de la position de la personne
nPosX = event.pos[0] - perso1.get_width()
nPosY = event.pos[1] - perso1.get_height()
# Actualise la fenêtre
pygame.display.flip()
# Déplacement du personnage
nPosX += nDirX
nPosY += nDirY
# Affiche le fond
fenetre.blit(fond, (0, 0)) # pour laisser les autres objets se dessiner par dessus le fond
# Affiche la personne (par dessus le fond)
fenetre.blit(perso1, (nPosX, nPosY))
# Déplacement de tous les projectiles
# Affiche les projectiles par dessus ce qui prédèce
# Il faut parcourir la liste depuis la fin, car len(glaProjectiles) peut changer dans la boucle.
i = len(glaProjectiles)
while i > 0:
i -= 1
glaProjectiles[i].mouvement()
# Actualise la fenêtre
pygame.display.flip()
# Limitation de la vitesse à ... images par seconde
# 100 => attend que 1000 / 100 [ms] se soit écoulé depuis le dernier appel,
# avant de continuer.
# 100 => limite à 100 images par secondes, soit 100 exécutions de la boucle par seconde
myClock.tick(100) # c.f. https://www.pygame.org/docs/ref/time.html#pygame.time.Clock.tick
pygame.display.quit() # ferme la fenêtre, c.f. https://www.pygame.org/docs/ref/display.html
pygame.quit() # quitte pygame, c.f. https://www.pygame.org/docs/ref/pygame.html
# pyg0024b_bases_mouvements.py
# Référence : https://openclassrooms.com/courses/interface-graphique-pygame-pour-python/premieres-fenetres
# Premier essais avec Pygame en Python 3
# Gestion d'événements :
# https://openclassrooms.com/courses/interface-graphique-pygame-pour-python/gestion-des-evenements-1
# TP-DK Labyrinthe !
# https://openclassrooms.com/courses/interface-graphique-pygame-pour-python/tp-dk-labyrinthe
#
# Lancement de projectiles.
# Dans pyg0022_bases_mouvements.py, il est presque impossible de lancer un seul projectle à la fois.
# Ici, on gère cela en testant que la touche espace K_SPACE a été relachée avant de relancer un projectil.
# Dans pyg0023_bases_mouvements.py, lorsque l'on presse sur la touche espace, le personnage s'arrête.
# Ici, il s'arrête si on arrête de presser sur les flèches.
#
# Développement à partir de pyg0024, en ajoutant des ROTATIONs d'IMAGES.
'''
Liste des modules de Pygame :
display
mixer # pour la gestion du son
draw
event
image
mouse
time
'''
import pygame
from pygame.locals import *
import os
#from threading import Timer # pour lancer un Timer
# ===== Variables globales ======================
# Variable qui continue la boucle si = 1, stoppe si = 0
continuer = 1
nPosX = 200 # Position en X du personnage
nPosY = 200 # Position en Y du personnage
nDirX = 0 # Sens de déplacement du personnage selon X. 0 => il ne bougle pas
nDirY = 0 # Sens de déplacement du personnage selon Y. 0 => il ne bougle pas
# Tableau de 20 projectiles
nbProj = 20 # Nombre max de projectiles
anProjPosX = 20*[200] # positions des projectiles
anProjPosY = 20*[400]
afProjVisible = 20*[False]
fLanceOK = True # Indique que l'on peut lancer un projectile
def rot_center(image, angle):
"""rotate an image while keeping its center and size"""
rot_rect = image.get_rect().copy() # Copie du rectange d'origine de l'image
rot_image = pygame.transform.rotate(image, angle) # Rotation de l'image
rot_rect.center = rot_image.get_rect().center # défini le centre du rectangle
rot_image = rot_image.subsurface(rot_rect).copy() # limite l'image tournée au rectangle d'origine
return rot_image
# Pour positionner la fenêtre Pygame.
#os.environ['SDL_VIDEO_WINDOW_POS'] = '20,100'
os.environ['SDL_VIDEO_WINDOW_POS'] = '%d,%d' % (120, 200)
# Information sur le display
# https://www.pygame.org/docs/ref/display.html
# Initialisation des modules de Pygame
pygame.init()
# Création d'une fenêtre graphique de Pygame
##fenetre = pygame.display.set_mode((640, 480))
# Permet de rendre la fenêtre de taille ajustable.
fenetre = pygame.display.set_mode((640,480), RESIZABLE)
# Une image pour le fond de la fenêtre
fond = pygame.image.load("images/background_herbe.jpg").convert()
perso1 = pygame.image.load("images/perso_1.png").convert_alpha()
projectile = pygame.image.load("images/BouleBleue_dir.png").convert_alpha()
# Ne fonctionne pas !???
perso1.set_colorkey((255,255,255)) #Rend le blanc (valeur RGB : 255,255,255) de l'image transparent
# Rotation de l'image
#projectile = pygame.transform.rotate(projectile, 50)
# Affiche l'image dans la fenêtre
fenetre.blit(fond, (0, 0))
# Affiche le personnage au-dessus de l'herbe
fenetre.blit(perso1, (200, 200))
# Actualise la fenêtre
pygame.display.flip()
# Pour avoir un autorepeat si une touche est pressée.
pygame.key.set_repeat(10, 3) # répétition de la touche toutes les ... [ms]
# Pour définir une vitesse d'exécution,
# en limitant en attendant qu'un certain temps se soit écoulé avant de continuer.
myClock = pygame.time.Clock()
# ================================================
# Boucle principale
while continuer:
# Boucle sur tous les événements gérés par Pygame
for event in pygame.event.get():
if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:
# La fenêtre a été fermée ou La touche ESC a été pressée.
continuer = 0 # Indique de sortir de la boucle.
if event.type == KEYDOWN: # KEYUP existe aussi
# Change les coordonnées de la position de la personne
if event.key == K_RIGHT: nDirX = 1
if event.key == K_LEFT: nDirX = -1
if event.key == K_UP: nDirY = -1
if event.key == K_DOWN: nDirY = 1
if (event.key == K_SPACE) and fLanceOK:
fLanceOK = False # pour ne pas permettre de lancer plusieurs projecties en même temps
# Cherche un projectile libre dans la liste, pour le rendre visible
for nn in range(nbProj):
if (not afProjVisible[nn]):
# Un projectile libre disponible, lance-le
afProjVisible[nn] = True
anProjPosX[nn] = nPosX + 20
anProjPosY[nn] = nPosY
break # sort de la boucle
if event.type == KEYUP: # pour ne pas permettre de lancer plusieurs projectiles en même temps
if event.key == K_RIGHT: nDirX = 0
if event.key == K_LEFT: nDirX = 0
if event.key == K_UP: nDirY = 0
if event.key == K_DOWN: nDirY = 0
if (event.key == K_SPACE):
fLanceOK = True
if event.type == MOUSEBUTTONDOWN: # Un bouton de la souris pressé
if event.button == 1: # Boutton gauche pressé
# Change les coordonnées de la position de la personne
nPosX = event.pos[0] # Coordonnées du pointeur de souris
nPosY = event.pos[1]
if event.button == 3: # Boutton droit pressé
# Change les coordonnées de la position de la personne
nPosX = event.pos[0] - perso1.get_width()
nPosY = event.pos[1] - perso1.get_height()
# Actualise la fenêtre
pygame.display.flip()
if event.type == MOUSEMOTION: # La souris a bougé
if event.buttons[0] == 1: # Boutton gauche pressé
# Change les coordonnées de la position de la personne
nPosX = event.pos[0] # Coordonnées du pointeur de souris
nPosY = event.pos[1]
##if event.buttons[1] == 1: # Boutton du milieu pressé
if event.buttons[2] == 1: # Boutton du milieu pressé
# Change les coordonnées de la position de la personne
nPosX = event.pos[0] - perso1.get_width()
nPosY = event.pos[1] - perso1.get_height()
# Actualise la fenêtre
pygame.display.flip()
# Déplacement du personnage
nPosX += nDirX
nPosY += nDirY
# Affiche le fond, puis la personne par-dessus
fenetre.blit(fond, (0, 0))
fenetre.blit(perso1, (nPosX, nPosY))
# Traitement des projectiles, pour les faire bouger.
for nn in range(nbProj):
if (afProjVisible[nn]):
# Un projectile visible, fait-le avancer
anProjPosY[nn] -= 1
# Tourne l'image d'origine, pour l'affiche
projectile_rot = rot_center(projectile, anProjPosY[nn])
fenetre.blit(projectile_rot, (anProjPosX[nn], anProjPosY[nn]))
# Si le projectile a atteint le haut de l'écarn,
# il est rendu invisible et disponible pour une autre fois
if (anProjPosY[nn] < -2):
afProjVisible[nn] = False;
# Actualise la fenêtre
pygame.display.flip()
# Limitation de la vitesse à ... images par seconde
# 100 => attend que 1000 / 100 [ms] se soit écoulé depuis le dernier appel,
# avant de continuer.
# 100 => limite à 100 images par secondes, soit 100 exécutions de la boucle par seconde
myClock.tick(200) # c.f. https://www.pygame.org/docs/ref/time.html#pygame.time.Clock.tick
pygame.display.quit() # ferme la fenêtre, c.f. https://www.pygame.org/docs/ref/display.html
pygame.quit() # quitte pygame, c.f. https://www.pygame.org/docs/ref/pygame.html
# pyg0110_ping_pong.py
'''
Programmation d'un jeu simple de ping-png, début
C.f. la fin de la page : https://www.pygame.org/docs/tut/PygameIntro.html
Elle donne une liste de modules faisant partie de Pygame.
'''
import pygame
from pygame.locals import *
import os
# Pour positionner la fenêtre Pygame.
os.environ['SDL_VIDEO_WINDOW_POS'] = '%d,%d' % (120, 200)
# Initialisation des modules de Pygame
pygame.init()
# Permet de rendre la fenêtre de taille ajustable.
fenetre = pygame.display.set_mode((640,480), RESIZABLE)
# Une image pour le fond de la fenêtre
fond = pygame.image.load("images/background_herbe.jpg").convert()
perso1 = pygame.image.load("images/perso_1.png").convert_alpha()
# Redimensionne la taille de l'image
# C.f. https://www.pygame.org/docs/ref/transform.html
perso1 = pygame.transform.scale(perso1, (40,40))
# Affiche l'image dans la fenêtre
fenetre.blit(fond, (0, 0))
# Affiche le personnage au-dessus de l'herbe
fenetre.blit(perso1, (200, 200))
# Actualise la fenêtre
pygame.display.flip()
PosX = 200 # Position en X de la perso1
PosY = 210 # Position en Y de la perso1
DirX = 2 # Direction X de déplacement de perso1
DirY = 1.77 # Direction Y de déplacement de perso1
# Pour avoir un autorepeat si une touche est pressée.
pygame.key.set_repeat(10, 3) # répétition de la touche toutes les ... [ms]
# Pour définir une vitesse d'exécution,
# en limitant en attendant qu'un certain temps se soit écoulé avant de continuer.
myClock = pygame.time.Clock()
# Variable qui continue la boucle si = 1, stoppe si = 0
continuer = 1
# ================================================
# Boucle principale
while continuer:
# Boucle sur tous les événements gérés par Pygame
for event in pygame.event.get():
if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:
# La fenêtre a été fermée ou La touche ESC a été pressée.
continuer = 0 # Indique de sortir de la boucle.
# Affiche le fond
fenetre.blit(fond, (0, 0))
# Affiche l'image de perso1
fenetre.blit(perso1, (PosX, PosY))
# Mouvement automatique de perso1
PosX = PosX + DirX
PosY = PosY + DirY
if (PosX > 600):
DirX = -DirX
# Accélère le mouvement de perso1
DirX -= 0.2
if (PosX < 10):
# Rebondi sur la paroi de gauche
DirX = -DirX
# Accélère le mouvement de perso1
DirX += 0.2
if (PosY < 1):
# Rebondi sur la paroi du haut
DirY = -DirY
if (PosY > 450):
# Rebondi sur la paroi du bas
DirY = -DirY
# Actualise la fenêtre
pygame.display.flip()
# Limitation de la vitesse à ... images par seconde
# 120 => attend que 1000 / 120 [ms] se soit écoulé depuis le dernier appel,
# avant de continuer.
# 120 => limite à 120 images par secondes, soit 20 exécutions de la boucle par seconde
myClock.tick(120) # c.f. https://www.pygame.org/docs/ref/time.html#pygame.time.Clock.tick
pygame.display.quit() # ferme la fenêtre, c.f. https://www.pygame.org/docs/ref/display.html
pygame.quit() # quitte pygame, c.f. https://www.pygame.org/docs/ref/pygame.html
Plan du Site :
Home
Python
pygame_code.html
( = http://www.juggling.ch/gisin/python/pygame_code.html )
Page mise à jour le 10 juin 2019 par Bernard Gisin
( Envoyer un e-mail )
Hébergement par : www.infomaniak.ch