So Long est un petit jeu 2D développé en C utilisant la bibliothèque graphique MiniLibX. L'objectif est de guider un personnage à travers une carte, de collecter tous les objets présents et de s'échapper par la sortie, tout en évitant les obstacles et les ennemis (version bonus).
Ce projet fait partie du cursus de l'école 42 et permet de se familiariser avec la gestion des fenêtres, les événements (clavier/souris), les textures et les algorithmes de parsing de carte (Flood Fill).
- Parsing de carte : Lecture et validation de fichiers
.ber. - Validation de carte :
- La carte doit être fermée par des murs.
- Elle doit être rectangulaire.
- Elle doit contenir au moins un objet (C), une sortie (E) et une position de départ (P).
- Un chemin valide doit exister vers la sortie et tous les objets.
- Gameplay :
- Déplacement du personnage (Haut, Bas, Gauche, Droite).
- Compteur de mouvements affiché dans le terminal.
- Gestion de la fermeture propre de la fenêtre (Croix ou ESC).
- Ennemis : Ajout de patrouilles ou d'obstacles mobiles qui font perdre la partie au contact.
- Sprite Animation : Animation des sprites (ennemi ou joueur).
- Compteur à l'écran : Affichage du nombre de mouvements directement sur la fenêtre de jeu.
- Clonez le dépôt :
git clone https://github.com/papacolas/42-So_long.git
cd 42-So_long- Compilez le projet :
- Pour la version standard :
make- Pour la version bonus :
make bonusLancez le jeu en fournissant le chemin vers un fichier de carte .ber :
./so_long playing_maps/map_grande.berOu pour le bonus :
./so_long_bonus playing_maps/map_grande.berLe dossier playing_maps contient plusieurs cartes valides. Le dossier problems_map contient des cartes invalides pour tester le parsing d'erreurs.
| Touche | Action |
|---|---|
W / ↑ |
Aller en haut |
A / ← |
Aller à gauche |
S / ↓ |
Aller en bas |
D / → |
Aller à droite |
ESC |
Quitter le jeu |
src/: Code source de la partie obligatoire.src_bonus/: Code source de la partie bonus.includes/: Fichiers d'en-tête (.h).libft/: Ma bibliothèque libft personnelle.playing_maps/: Cartes de jeu valides.textures/: Sprites et images du jeu.
Le fichier de carte doit respecter les caractères suivants :
0: Sol vide1: MurC: Item à collecterE: Sortie (accessible après avoir tout collecté)P: Position de départ du joueurM: Ennemi (Bonus uniquement)