1. Présentation de C et SDL2
Le C est un langage de programmation performant, idéal pour développer des applications nécessitant un contrôle précis des ressources. La bibliothèque SDL2 (Simple DirectMedia Layer) permet de créer des jeux ou des programmes graphiques en gérant l’affichage, les entrées clavier, et bien plus.




2. Contexte du projet
Le projet consiste à développer un Snake Game dans le cadre d’un exercice de programmation. Ce jeu classique, où le joueur contrôle un serpent qui doit manger des pommes pour grandir tout en évitant les obstacles, est une application idéale pour pratiquer les concepts de programmation structurée, de gestion des événements, et de manipulation graphique.
3. Fonctionnalités du jeu
Affichage graphique : Le serpent est dessiné sous forme de cercles, et les pommes sont représentées par des rectangles avec un contour.
Déplacement dynamique : Le joueur contrôle le serpent avec les flèches du clavier.
Gestion des collisions : Le jeu prend fin si le serpent entre en collision avec un mur ou avec sa propre queue.
Pommes et score : Trois pommes apparaissent aléatoirement ; chaque pomme mangée fait grandir le serpent et augmente le score.
Sauvegarde/chargement : Le joueur peut sauvegarder et charger la partie à tout moment.
Choix de la vitesse : Avant de commencer, le joueur peut choisir entre trois niveaux de vitesse (lent, normal, rapide).
4. Code et bibliothèques utilisées
Gestion des pommes : Une pomme mangée est repositionnée aléatoirement.
Bibliothèques :
<SDL2/SDL.h>
: Pour les graphiques et les événements.
<stdlib.h>
et <time.h>
: Pour les positions aléatoires des pommes.
<stdio.h>
: Pour les entrées/sorties, notamment la sauvegarde et le chargement.
Exemple de logique clé :
Déplacement du serpent : Les coordonnées de chaque segment sont mises à jour pour suivre la tête.
Vérification des collisions : Avec les murs ou la queue.
Avec des graphismes simples mais efficaces et des fonctionnalités interactives, ce Snake Game constitue un excellent projet pour apprendre à combiner logique algorithmique et développement graphique en C.