Jeu de bâtonnets - Réalisation personnelle
Ce programme en langage C est un jeu de bâtonnets que j’ai développé dans le cadre de mes cours d'algorithmique. Il applique plusieurs concepts fondamentaux tels que les boucles, les conditions, les tableaux, et la gestion des entrées utilisateur. Je vais vous présenter le fonctionnement du jeu, ainsi que les notions mises en pratique dans ce projet.
Objectif du jeu
Le principe du jeu est simple :
-
Deux joueurs s'affrontent à tour de rôle.
-
À chaque tour, un joueur retire un certain nombre de bâtonnets d'une ou plusieurs cases.
-
Règle clé : le joueur qui retire le dernier bâtonnet perd la partie.
Fonctionnement du programme
1. Initialisation
Tout d'abord, les variables essentielles sont définies et le tableau représentant les bâtonnets est initialisé.
#define NB_CASES 4
int tab[NB_CASES], player, nb, choix, stick, totalstick, nbcases, last, control;
-
tab[NB_CASES]
: Tableau de 4 cases représentant les bâtonnets. -
player
: Indique quel joueur est actif (0 ou 1). -
totalstick
: Total des bâtonnets en jeu (initialement 16).
Chaque case du tableau est initialisée avec un nombre spécifique de bâtonnets :
tab[0] = 1;
tab[1] = 3;
tab[2] = 5;
tab[3] = 7;
2. Boucle principale
Le cœur du programme repose sur une boucle qui continue tant qu’il reste des bâtonnets.
Affichage de l’état du jeu
Pour chaque tour, l’état des cases est affiché :
for (int i = 0; i < nbcases; i++) {
printf("Case %d : ", i + 1);
for (int j = 0; j < tab[i]; j++) printf("|");
printf("\n");
}
Cela permet de visualiser les bâtonnets restants grâce à une boucle imbriquée.
Choix du joueur
Le joueur doit choisir une case valide contenant des bâtonnets :
do {
printf("Choisissez la case : ");
scanf("%d", &choix);
} while (choix < 1 || choix > nbcases || tab[choix - 1] == 0);
Puis, il sélectionne combien de bâtonnets retirer, tout en respectant les règles :
do {
printf("Choisissez le nombre de bâtonnets que vous retirez : ");
scanf("%d", &nb);
} while (nb < 1 || nb > tab[choix - 1]);
Mise à jour du jeu
Après chaque choix :
-
Le nombre de bâtonnets dans la case est réduit.
-
Le total des bâtonnets restants est mis à jour.
-
Le joueur suivant est activé.
tab[choix - 1] -= nb; totalstick -= nb; player = 1 - player;
3. Fin de la partie
Lorsque le total des bâtonnets atteint zéro, le joueur ayant effectué le dernier retrait perd la partie :
printf("\nJoueur %d vous avez perdu !", player);
Concepts appliqués
Ce projet m’a permis de mettre en pratique plusieurs notions importantes :
-
Boucles : Utilisées pour gérer les tours de jeu et l’affichage des bâtonnets.
-
Conditions : Vérification des choix du joueur pour assurer leur validité.
-
Tableaux : Utilisation pour représenter les cases et manipuler les bâtonnets.
-
Interactivité : Le programme repose sur l’interaction avec les joueurs via
scanf
.
Mon apprentissage
En réalisant ce projet, j’ai renforcé mes compétences en :
-
Manipulation de tableaux et gestion de données dynamiques.
-
Utilisation de boucles imbriquées pour des affichages complexes.
-
Validation des entrées utilisateur pour garantir un comportement attendu.
Ce jeu m’a aussi appris à structurer la logique algorithmique pour créer une expérience interactive et cohérente.
Je suis fier de cette réalisation car elle montre ma capacité à transformer des concepts théoriques en un programme concret et fonctionnel. C’est un excellent exemple de l’application pratique des connaissances acquises en classe.
Si vous avez des suggestions ou des points à ajuster, n'hésitez pas !
Date
29/12/2024Catégorie
Auteur
OlivierCommentaires
Aucun commentaire pour le moment.