Contrôllez votre joueur en Pygame¶
Créez un vrai joueur contrôlable au clavier et apprenez à gérer ses déplacements proprement en Pygame.
Représenter le joueur¶
On va représenter le joueur par un simple rectangle.
On a donc besoin de deux infos :
- sa position
(x, y) - sa taille
(largeur, hauteur)
Exemple :
player_rect = pygame.Rect(100, 100, 50, 50)
Déplacer le joueur au clavier¶
Pour lire le clavier en continu, on utilise :
keys = pygame.key.get_pressed()
Puis on teste certaines touches :
if keys[pygame.K_LEFT]:
player_rect.x -= 5
Ici, 5 est la vitesse : le joueur avance de 5 pixels par frame.
Exemple complet : un joueur qui bouge¶
import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Le joueur")
clock = pygame.time.Clock()
player_rect = pygame.Rect(100, 100, 50, 50)
speed = 5
running = True
while running:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
player_rect.x -= speed
if keys[pygame.K_RIGHT]:
player_rect.x += speed
if keys[pygame.K_UP]:
player_rect.y -= speed
if keys[pygame.K_DOWN]:
player_rect.y += speed
screen.fill((30, 30, 30))
pygame.draw.rect(screen, (0, 200, 255), player_rect)
pygame.display.flip()
pygame.quit()
Testez ça. Vous avez maintenant un personnage (un carré) contrôlé au clavier.
Ne pas sortir de l’écran¶
Pour éviter que le joueur sorte de la fenêtre, on peut limiter sa position.
La fenêtre fait 800x600, donc :
xdoit rester entre0et800 - largeurydoit rester entre0et600 - hauteur
if player_rect.x < 0:
player_rect.x = 0
if player_rect.x > 800 - player_rect.width:
player_rect.x = 800 - player_rect.width
if player_rect.y < 0:
player_rect.y = 0
if player_rect.y > 600 - player_rect.height:
player_rect.y = 600 - player_rect.height
On peut aussi faire plus simple avec une méthode déjà incluse :
player_rect.clamp_ip(screen.get_rect())
clamp_ip remet le rectangle à l’intérieur d’un autre rectangle (ici, l’écran).
On garde cette version “magique” pour plus tard. Pour l’instant, comprendre la version avec les
ifest plus important.
Quizz¶
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
player_rect.y += 5
Que fait ce code quand on appuie sur la flèche du haut ?
- Le joueur monte
- *Le joueur descend
- Le joueur va à droite
- Le joueur ne bouge pas
> Question piège ! En Pygame, l’axe y augmente vers le bas. Donc `y += 5` fait descendre.
Exercice pratique¶
Codez un programme Pygame avec un joueur rectangle qui :
- Bouge avec les flèches du clavier
- Ne peut pas sortir de l’écran
- A une vitesse stockée dans une variable
speed - Change de couleur si on maintient la touche espace
Indice : pour savoir si espace est maintenu :
keys[pygame.K_SPACE]
En résumé¶
Vous savez maintenant :
- Représenter un joueur avec un
pygame.Rect - Lire le clavier en continu avec
pygame.key.get_pressed() - Déplacer un objet en modifiant
xety - Comprendre le repère écran (y vers le bas)
- Empêcher le joueur de sortir de la fenêtre
Dans la prochaine page, on va rajouter un truc essentiel : des objets à éviter… donc des collisions.