Le Contexte
Ce projet regroupe deux applications développées pour maîtriser la bibliothèque Pygame et renforcer ma compréhension de l'algorithmique en Python. L'objectif n'était pas seulement d'afficher des graphismes, mais de gérer des boucles d'événements complexes et des structures de données dynamiques.
J'ai réalisé un jeu de hasard simple (Coinflip) pour comprendre la gestion des inputs souris, et une réplique du célèbre 2048 pour travailler sur la manipulation de matrices et la logique de fusion des tuiles.
1. Le Projet 2048
Une réplique complète du jeu de puzzle mathématique.
- Logique Matricielle : Gestion d'une grille 4x4 sous forme de liste de listes.
-
Algorithme de Fusion : Création de la fonction
compress_and_mergequi déplace les tuiles et additionne les valeurs identiques. -
Transposition : Utilisation astucieuse de
zip(*grid)pour réutiliser la logique de déplacement "Gauche" pour les directions Haut, Bas et Droite. - Dictionnaire de Couleurs : Attribution dynamique des couleurs RGB selon la valeur de la tuile (de 2 à 2048).
Aperçu Interface (2048)
Rendu simulé de la grille 4x4
Aperçu Interface (Coinflip)
Gestion des clics et affichage conditionnel
2. Le Projet Coinflip
Un simulateur de Pile ou Face interactif.
-
Interactivité Souris : Utilisation de
pygame.MOUSEBUTTONDOWNet de la méthoderect.collidepoint(event.pos)pour détecter les clics précis sur les boutons. -
Rendu Conditionnel : Affichage dynamique du
résultat ("Gagné" en vert ou "Perdu" en rouge) selon le choix de
l'utilisateur comparé au
random.choice. -
Boucle de Jeu : Structure classique Pygame avec
gestion du rafraîchissement d'écran (
display.flip()).
Stack Technique & Outils
-
Python : Langage Core
-
Pygame : Moteur 2D
- Maths : Matrices & Random
-
Git : Versioning
Défis Techniques & Solutions
🔄 La rotation de matrice (2048)
Le plus grand défi du 2048 était d'éviter de réécrire la logique
de fusion pour les 4 directions (Haut, Bas, Gauche, Droite). J'ai
implémenté une solution élégante en utilisant la transposition de
matrice avec zip(*grid).
Par exemple, pour aller vers le Haut, le programme transpose la grille (les lignes deviennent des colonnes), applique le mouvement vers la "Gauche" (logique de base), puis transpose à nouveau la grille pour revenir à l'état normal. Cela réduit drastiquement la duplication de code.
🖱️ Gestion des événements (Coinflip)
Sur Coinflip, il fallait détecter précisément où l'utilisateur
cliquait. J'ai utilisé les objets Rect de Pygame. La
méthode pile_rect.collidepoint(event.pos) permet de
vérifier instantanément si les coordonnées de la souris au moment
du clic se trouvent à l'intérieur du bouton "Pile". C'est la base
de toute interface utilisateur graphique (GUI).