Snake avec Pygame

Bienvenue dans notre jeu Snake en utilisant Pygame ! Nous allons dƩvelopper le jeu Ʃtape par Ʃtape pour crƩer une expƩrience amusante et interactive. Voici comment procƩder :

Partie 1 : Initialisation du jeu

Dans cette partie, nous allons initialiser Pygame, définir les couleurs utilisées dans le jeu et créer la fenêtre du jeu.

import pygame
import sys

# Initialisation de Pygame
pygame.init()

# DƩfinition des couleurs
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)

# Définition des dimensions de la fenêtre du jeu
WINDOW_WIDTH = 400
WINDOW_HEIGHT = 400


# Création de la fenêtre du jeu
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption(« Snake »)

Nous importons le module pygame et initialisons Pygame avec pygame.init(). Ensuite, nous définissons les couleurs que nous allons utiliser dans le jeu. Nous définissons également les dimensions de la fenêtre du jeu. Enfin, nous créons la fenêtre du jeu avec pygame.display.set_mode() et définissons le titre de la fenêtre avec pygame.display.set_caption().

Partie 2: Initialisation du serpent

Dans cette partie, nous allons dƩfinir les variables nƩcessaires pour reprƩsenter le serpent.

snake = [(9, 5), (8, 5), (7, 5)]
direction = RIGHT

Nous utilisons une liste snake pour stocker les segments du serpent. Chaque segment est reprƩsentƩ par un tuple de coordonnƩes (x, y). Nous initialisons le serpent avec trois segments. Nous dƩfinissons Ʃgalement la variable direction pour indiquer la direction initiale du serpent.

Partie 3: Initialisation de la nourriture

Dans cette partie, nous allons dƩfinir les variables nƩcessaires pour reprƩsenter la nourriture du serpent.

food = (random.randint(0, NUM_CELLS_X – 1), random.randint(0, NUM_CELLS_Y – 1))

Nous utilisons une variable food pour stocker les coordonnĆ©es de la nourriture. Les coordonnĆ©es x et y sont gĆ©nĆ©rĆ©es alĆ©atoirement Ć  l’intĆ©rieur des limites de la grille de jeu.

Partie 4: Boucle principale du jeu

Dans cette partie, nous allons crƩer la boucle principale du jeu qui sera exƩcutƩe en continu.


while True:
    # Gestion des événements
Ā  Ā  for event in pygame.event.get():
Ā  Ā  Ā  Ā  if event.type == pygame.QUIT:
Ā  Ā  Ā  Ā  Ā  Ā  pygame.quit()
Ā  Ā  Ā  Ā  Ā  Ā  sys.exit()

Ā  Ā  Ā  Ā  if event.type == pygame.KEYDOWN:
Ā  Ā  Ā  Ā  Ā  Ā  if event.key == pygame.K_UP and direction != DOWN:
Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ā  direction = UP
Ā  Ā  Ā  Ā  Ā  Ā  elif event.key == pygame.K_DOWN and direction != UP:
Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ā  direction = DOWN
Ā  Ā  Ā  Ā  Ā  Ā  elif event.key == pygame.K_LEFT and direction != RIGHT:
Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ā  direction = LEFT
Ā  Ā  Ā  Ā  Ā  Ā  elif event.key == pygame.K_RIGHT and direction != LEFT:
Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ā  direction = RIGHT

    # Déplacement du serpent

Ā  Ā  # Gestion des collisions

Ā  Ā  # Effacement de l’Ć©cran

Ā  Ā  # Dessin du serpent

Ā  Ā  # Dessin de la nourriture

Ā  Ā  # Actualiser l’affichage de la fenĆŖtre

    # ContrÓler la vitesse du jeu

Cette boucle principale s’exĆ©cute en continu jusqu’Ć  ce que le joueur ferme la fenĆŖtre du jeu. ƀ l’intĆ©rieur de la boucle, nous gĆ©rons les Ć©vĆ©nements tels que les mouvements du serpent Ć  l’aide des touches directionnelles du clavier. Ensuite, nous effectuons les diffĆ©rentes Ć©tapes du jeu : dĆ©placement du serpent, gestion des collisions, effacement de l’Ć©cran, dessin du serpent et de la nourriture, actualisation de l’affichage de la fenĆŖtre et contrĆ“le de la vitesse du jeu.

Les parties spƩcifiques comme le dƩplacement du serpent, la gestion des collisions et le dessin seront expliquƩes dans les Ʃtapes suivantes.

Partie 5: DƩplacement du serpent

Dans cette partie, nous allons gƩrer le dƩplacement du serpent en fonction de sa direction.

if direction == UP:
Ā  Ā  new_head = (snake[0][0], snake[0][1] – 1)
elif direction == DOWN:
Ā  Ā  new_head = (snake[0][0], snake[0][1] + 1)
elif direction == LEFT:
Ā  Ā  new_head = (snake[0][0] – 1, snake[0][1])
elif direction == RIGHT:
Ā  Ā  new_head = (snake[0][0] + 1, snake[0][1])

snake.insert(0, new_head)
snake.pop()

Nous déterminons la nouvelle position de la tête du serpent en fonction de sa direction. Ensuite, nous insérons cette nouvelle tête au début de la liste snake et supprimons le dernier segment pour effectuer le mouvement.

Partie 6: Gestion des collisions

Dans cette partie, nous allons gérer les collisions du serpent avec les bords de la fenêtre et avec lui-même.

if snake[0][0] < 0 or snake[0][0] >= NUM_CELLS_X or snake[0][1] < 0 or snake[0][1] >= NUM_CELLS_Y:
Ā  Ā  game_over()

if snake[0] in snake[1:]:
Ā  Ā  game_over()

Nous vérifions si la tête du serpent est en dehors des limites de la grille de jeu ou si elle entre en collision avec un autre segment du serpent. Dans ces cas, nous appelons la fonction game_over() qui met fin au jeu.

Partie 7: Effacement de l’Ć©cran

Dans cette partie, nous effaƧons l’Ć©cran avant de dessiner les Ć©lĆ©ments mis Ć  jour.

window.fill(BLACK)

Nous utilisons la couleur noire pour remplir l’Ć©cran et le prĆ©parer Ć  ĆŖtre redessinĆ©.

Partie 8: Dessin du serpent

Dans cette partie, nous dessinons le serpent Ć  l’Ć©cran en parcourant tous les segments de la liste snake.

for segment in snake:
Ā  Ā  pygame.draw.rect(window, GREEN, (segment[0] * CELL_SIZE, segment[1] * CELL_SIZE, CELL_SIZE, CELL_SIZE))

Nous utilisons la fonction pygame.draw.rect() pour dessiner un rectangle vert pour chaque segment du serpent Ć  sa position correspondante.

Partie 9: Dessin de la nourriture

Dans cette partie, nous dessinons la nourriture Ć  l’Ć©cran Ć  sa position actuelle.

pygame.draw.rect(window, RED, (food[0] * CELL_SIZE, food[1] * CELL_SIZE, CELL_SIZE, CELL_SIZE))

Nous utilisons la fonction pygame.draw.rect() pour dessiner un rectangle rouge pour reprƩsenter la nourriture Ơ sa position correspondante.

Partie 10: Actualisation de l’affichage de la fenĆŖtre

Dans cette partie, nous mettons Ć  jour l’affichage de la fenĆŖtre pour montrer les dessins mis Ć  jour.

pygame.display.update()

Nous utilisons la fonction pygame.display.update() pour actualiser l’affichage de la fenĆŖtre.

Partie 11: ContrƓle de la vitesse du jeu

Dans cette partie, nous contrƓlons la vitesse du jeu en utilisant une horloge.

clock.tick(10)

Nous utilisons la mĆ©thode tick() de l’objet clock pour spĆ©cifier le nombre de mises Ć  jour d’Ć©cran par seconde.

Cela conclut le découpage du code pour le jeu Snake. Les différentes parties expliquées ci-dessus peuvent être intégrées dans la boucle principale du jeu pour créer une version fonctionnelle du jeu Snake.

Retour en haut