Start jeu des trente allumettes

This commit is contained in:
flyingscorpio@pinebookpro 2021-11-29 11:19:42 +01:00
parent 0cc4e7c89f
commit 7e52f3fef9

View file

@ -0,0 +1,136 @@
/*
* =====================================================================================
*
* 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 <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
void afficher_regles();
void afficher_credits();
void afficher_allumettes();
void afficher_perdant(int);
int partie_finie();
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;
// menu, avec choix à retourner dans un case
printf("\t\t\t**********************\n");
printf("\t\t\t* Jeu des allumettes *\n");
printf("\t\t\t**********************\n\n");
printf("Bonjour et bienvenue dans le jeu des allumettes.\n");
while (1) {
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");
choix = 0;
scanf("%d", &choix);
switch (choix) {
case 1:
partie();
break;
case 2:
afficher_regles();
break;
case 3:
afficher_credits();
break;
case 4:
return EXIT_SUCCESS;
default:
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_finie()) {
afficher_allumettes();
if (jouer_coup()) {
joueur_courant = (J1 + 1) % 2; // Il n'y a que deux joueurs
}
}
afficher_perdant(joueur_courant);
}
int partie_finie() {
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;
}