/* * ===================================================================================== * * Filename: main.c * * Description: Le jeu des 30 allumettes se joue à deux joueurs qui, à tour de rôle, * prennent 1, 2 ou 3 allumettes d'un tas qui en contient initialement * 30. * Le joueur qui prend la dernière allumette perd. * Cette application permet à deux joueurs de s'affronter. C'est l'ordi- * nateur qui est l'arbitre de la partie. Il affiche le nombre d'allumet- * tes restant en jeu, donne la main à tour de rôle à chaque joueur et * vérifie que les joueurs respectent les règles du jeu. * Si un joueur veut prendre trop ou trop peu d'allumettes, le coup est * refusé et le joueur doit rejouer. Un joueur doit retirer entre 1 et 3 * allumettes. * En fin de partie, l'arbitre affiche le résultat. * * Version: 0.1 * Created: 11/29/2021 10:14:48 * * Author: Adam Belghith, Tunui Franken * Organization: Efrei * * ===================================================================================== */ #include #include #include void afficher_regles(); void afficher_credits(); void afficher_allumettes(); void afficher_perdant(int); int partie_en_cours(); int jouer_coup(); // renvoie faux si le coup n'est pas valide (il devra être rejoué) void partie(); // retourne le joueur perdant int NB_ALLUMETTES = 30; enum Joueurs {J1, J2}; int main() { int choix = 0; // menu, avec choix à retourner dans un case printf("\t\t**********************\n"); printf("\t\t* Jeu des allumettes *\n"); printf("\t\t**********************\n\n"); printf("Bonjour et bienvenue dans le jeu des allumettes.\n"); while (choix == 0) { printf("Que souhaitez-vous faire ?\n"); printf("1 - Jouer\n"); printf("2 - Voir les règles du jeu\n"); printf("3 - Voir les crédits\n"); printf("4 - Quitter\n"); printf("=> "); choix = fgetc(stdin); switch (choix) { case '1': partie(); break; case '2': afficher_regles(); break; case '3': afficher_credits(); break; case '4': return EXIT_SUCCESS; default: choix = 0; break; } } return EXIT_FAILURE; } void afficher_regles() { printf("TODO\n"); } void afficher_credits() { printf("Développeurs :\n"); printf("Adam Belghith et Tunui Franken\n"); } void afficher_perdant(int joueur_courant) { printf("Le perdant est %d\n", joueur_courant); } void afficher_allumettes() { printf("Il reste %d allumettes :\n", NB_ALLUMETTES); for (int i = 0; i < NB_ALLUMETTES; i++) { printf("| "); } printf("\n"); } void partie() { int joueur_courant = J1; while (partie_en_cours()) { afficher_allumettes(); if (jouer_coup()) { joueur_courant = (J1 + 1) % 2; // Il n'y a que deux joueurs } } afficher_perdant(joueur_courant); } int partie_en_cours() { return NB_ALLUMETTES; } int jouer_coup() { int allumettes_a_retirer; printf("Combien d'allumettes souhaitez-vous retirer ? [1-3] : "); scanf("%d", &allumettes_a_retirer); if ((allumettes_a_retirer < 1) || (allumettes_a_retirer > 3)) { printf("Coup invalide ! Veuillez recommencer...\n"); return false; } NB_ALLUMETTES = NB_ALLUMETTES - allumettes_a_retirer; if (NB_ALLUMETTES < 0) { NB_ALLUMETTES = 0; } return true; }