TNSI : POO, Tutoriel Pygame
Voici quelques tutoriels vidéos sur
YouTube conseillés.
TNtube - Apprendre Pygame de A à Z
Episode 1 : Introduction, Installation et Première Fenêtre
VIDEO
Boucle de Détection des Événements :
import pygame
pygame . init ()
# Générer la fenêtre du jeu
pygame . display . set_caption ( "Shoot'em Up" )
screen = pygame . display . set_mode (( 1080 , 720 ))
running = True
while running :
# boucle de détection des événements
for event in pygame . event . get ():
# si l'événement est une fermeture de fenêtre
if event . type == pygame . QUIT :
running = False
pygame . quit ()
Episode 2 : Image, Événements, Déplacements
VIDEO
Boucle des Événements SANS Répétitions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import pygame
pygame . init ()
screen = pygame . display . set_mode (( 400 , 400 ))
running = True
image = pygame . image . load ( "ball.png" ) . convert ()
while running :
for event in pygame . event . get ():
if event . type == pygame . QUIT :
running = False
if event . type == pygame . KEYDOWN :
if event . key == pygame . K_LEFT :
print ( "Gauche !" )
if event . key == pygame . K_RIGHT :
print ( "Droite !" )
if event . key == pygame . K_UP :
print ( "Haut !" )
if event . key == pygame . K_DOWN :
print ( "Bas !" )
screen . blit ( image , ( 0 , 0 ))
pygame . display . flip ()
pygame . quit ()
Boucle des Événements AVEC répétitions
La fonction pygame.event.get_pressed()
renvoie un dictionnaire {pygame.K_a: 0, pygame.K_b:0, pygame.K_c:0, ...}
dont les valeurs sont :
soit 0
pour une touche NON appuyée
soit 1
pour une touche APPUYÉE
Cette fonction fonctionne uniquement avec les touches du clavier .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import pygame
pygame . init ()
screen = pygame . display . set_mode (( 400 , 400 ))
running = True
image = pygame . image . load ( "ball.png" ) . convert ()
while running :
for event in pygame . event . get ():
if event . type == pygame . QUIT :
running = False
pressed = pygame . key . get_pressed ()
if pressed [ pygame . K_LEFT ]:
print ( "Gauche !" )
if pressed [ pygame . K_RIGHT ]:
print ( "Droite !" )
if pressed [ pygame . K_UP ]:
print ( "Haut !" )
if pressed [ pygame . K_DOWN ]:
print ( "Bas !" )
screen . blit ( image , ( 0 , 0 ))
pygame . display . flip ()
pygame . quit ()
Balle se déplaçant en 60fps (au lieu de 5000fps par défaut)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 import pygame
pygame . init ()
screen = pygame . display . set_mode (( 400 , 400 ))
running = True
image = pygame . image . load ( "ball.png" ) . convert ()
x = 0
y = 0
clock = pygame . time . Clock ()
while running :
for event in pygame . event . get ():
if event . type == pygame . QUIT :
running = False
pressed = pygame . key . get_pressed ()
if pressed [ pygame . K_LEFT ]:
x -= 1
if pressed [ pygame . K_RIGHT ]:
x += 1
if pressed [ pygame . K_UP ]:
y -= 1
if pressed [ pygame . K_DOWN ]:
y += 1
screen . fill (( 0 , 0 , 0 ))
screen . blit ( image , ( x , y ))
pygame . display . flip ()
clock . tick ( 60 )
pygame . quit ()
Episode 3 : Structure POO, Rects, Gestion des Collisions
VIDEO
Fichier game.py
Fichier player.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 import pygame
from player import Player
class Game :
def __init__ ( self , screen ):
self . screen = screen
self . running = True
self . clock = pygame . time . Clock ()
self . player = Player ( 0 , 0 )
self . area = pygame . Rect ( 300 , 150 , 300 , 300 )
self . area_color = "red"
def handling_events ( self ):
for event in pygame . event . get ():
if event . type == pygame . QUIT :
self . running = False
keys = pygame . key . get_pressed ()
if keys [ pygame . K_LEFT ]:
self . player . velocity [ 0 ] = - 1
elif keys [ pygame . K_RIGHT ]:
self . player . velocity [ 0 ] = 1
else :
self . player . velocity [ 0 ] = 0
if keys [ pygame . K_UP ]:
self . player . velocity [ 1 ] = - 1
elif keys [ pygame . K_DOWN ]:
self . player . velocity [ 1 ] = 1
else :
self . player . velocity [ 1 ] = 0
def update ( self ):
self . player . move ()
if self . area . colliderect ( self . player . rect ):
self . area_color = "blue"
else :
self . area_color = "red"
def display ( self ):
self . screen . fill ( "white" )
pygame . draw . rect ( self . screen , self . area_color , self . area )
self . player . draw ( self . screen )
pygame . display . flip ()
def run ( self ):
while self . running :
self . handling_events ()
self . update ()
self . display ()
self . clock . tick ( 60 )
pygame . init ()
screen = pygame . display . set_mode (( 1080 , 720 ))
game = Game ( screen )
game . run ()
pygame . quit ()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 import pygame
class Player :
def __init__ ( self , x , y ):
self . image = pygame . image . load ( "player.png" )
self . image
self . rect = self . image . get_rect ( x = x , y = y )
self . speed = 5
self . velocity = [ 0 , 0 ]
def move ( self ):
self . rect . move_ip ( self . velocity [ 0 ] * self . speed , self . velocity [ 1 ] * self . speed )
def draw ( self , screen ):
screen . blit ( self . image , self . rect )
4 novembre 2024
15 novembre 2023
Rod2ik