Start jeu des trente allumettes
This commit is contained in:
parent
0cc4e7c89f
commit
7e52f3fef9
1 changed files with 136 additions and 0 deletions
136
programmation-c-cpp/jeu-des-trente-allumettes/main.c
Normal file
136
programmation-c-cpp/jeu-des-trente-allumettes/main.c
Normal 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;
|
||||||
|
}
|
Loading…
Reference in a new issue