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