Vous êtes sur la page 1sur 5

#include <stdio.

h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <time.h>
#define LARGEUR_CONSOLE 80 //utiliser dans la fct centrer

void menuall()
{
system("cls");
int n; int choix;
// demander de l'utilisateur de choisir le nombre d'allumettes qui veut jouer
avec
//le 1ér choix c'est un nombre aléatoire qui doit etre > 11 ce nombre est
fourni par l'utilisateur
//le deuxiéme choix c'est un nombre prédéfini 20
// le 3 éme choix c'est que l'utilisateur pout taper lenombre d'allumettes qui
veut jouer avec .... mais ce nombre doit etre supérieur à 10

printf("\n Que faire ?\n\n");


printf("1 - Utiliser un nombre aleatoire d'alumettes\n");
printf("2 - Utiliser le nombre d'alumettes predefini (20)\n");
printf("3 - Choisir manuellement le nombre d'allumettes\n");
printf("\nVotre choix : ");
scanf("%d", &choix);
// fonction prédéfinie (selon en algorithme ) qui va tester le choix de
l'utiliateur
// si 1 elle va donner un nombre aléatoire > 11
// si 2 elle va donner 20
// si 3 elle va demander de l'utilisateur de taper un nombre de son choix qui
doit etre supérieur à 10
switch (choix)
{
case 1 : do{n=rand()%30;}while (n<11); break;
case 2 : n=20 ; break;
case 3 : printf("\nNombre d'allumettes a utliser : ");
scanf("%d", &n) ;
while (n<=10) {printf("Le nombre min d'allumette doit etre
superieur ou egal a 11 ! \nNombre d'allumettes a utliser : ");scanf("%d", &n) ;} ;
break;
default : system("cls");
printf("\n désolé votre choix n'est pas valide ...\n\n");
menuall() ; break;
}
menuj(n);
}

void menuj(int n)
{
system("cls");
int choix, niv;
printf("\n Que faire maintenant ?\n\n");
printf("1 - Jeu 2 joueurs\n");
printf("2 - Jeu 1joueur VS ordinateur\n");
printf("\nVotre choix : ");
scanf("%d", &choix);
switch (choix)
{
// si le choix de l'utilisateur est 1 contre 1 c.à.dire le premier choix
//la fonction jeu1vs1 va etre appelée
case 1 : jeu1vs1(n,0,0,n); break;
//le deuxieme choix c'est un jeu vs l'ordinateur mais il doit choisir le
niveau de difficulté
case 2 :
printf("\nChoisir entre 3 niveaux de difficulte\nNiveau : ");
do {scanf("%d", &niv);} while ((niv<0)||(niv>3));
system("cls");
printf("Jeu contre l'ordinateur, niveau %d, avec %d allumettes au
depart.\n\n", niv, n);
if ((niv==3)&&(n==11)) printf("Bon, en fait t'as perdu d'avance, la,
mais bon, essaye quand meme \n\n");
jeu1vsordi(n,0,0,n, niv); break;
default : system("cls");
printf("\nJe n'ai pas compris...\n\n");
menuj(n) ; break;
}
}

// définition de la fonction jeu1vs1


void jeu1vs1(int n, int nbfj1, int nbfj2, int N)
{
int j1, j2; int i;
printf("\n");
for (i=1;i<=n;i++) {printf("| ");}
printf(" Il reste %d allumettes\n\n", n);
if (nbfj1==nbfj2)
{
printf("J1 - Nombre d'allumettes a enlever : ");
scanf("%d", &j1);
if ((j1<0)||j1>3) {printf("\n On ne peut pas faire ca le nombre doit etre
entre 1 et 3 :/\n\n");jeu1vs1(n, nbfj1, nbfj2, N);}
n=n-j1; nbfj1++;
if (n==1) {win(1,2,N, 0);}
else {jeu1vs1(n, nbfj1, nbfj2, N);}
}
else
{
printf("J2 - Nombre d'allumettes a enlever : ");
scanf("%d", &j2);
if ((j2<0)||j2>3) {printf("\nOn ne peut pas faire ca... :/\n\n");jeu1vs1(n,
nbfj1, nbfj2, N);}
n=n-j2; nbfj2++;
if (n==1) {win(2,2,N, 0);}
else {jeu1vs1(n, nbfj1, nbfj2, N);}
}
}

// définition de la fonction jeu1vsordi


void jeu1vsordi(int n, int nbfj1, int nbfj2, int N, int niv) // n=nbre allumettes
en cours, nbfj1, nbfj2 = nbre de coups des joueurs, N = nbre allumettes au départ,
niv=niveau
{
int j1, j2; int i,k;
printf("\n");
for (i=1;i<=n;i++) {printf("| ");}
//if (n<=24) {k=48-2*n;}
//else {k=3;}
//for(i=1;i<=k;i++)
//{printf(" ");}
printf("Il reste %d allumettes\n\n", n);
if (nbfj1==nbfj2)
{
printf("J1 - Nombre d'allumettes a enlever : ");
scanf("%d", &j1);
if ((j1<=0)||j1>3) {printf("\nOn ne peut pas faire ca :/\n\n");
jeu1vsordi(n, nbfj1, nbfj2, N, niv);}
n=n-j1; nbfj1++;
if (n==1) {win(1,1,N, niv);}
else {jeu1vsordi(n, nbfj1, nbfj2, N, niv);}
}
else
{
if (niv==3)
{
if (n<=4) {j2=n-1;}
else if ((n>5)&&(n<=8)) {j2=n-5;}
else if (n%4==0) {j2=3;}
else if (n%4==2) {j2=1;}
else if (n%4==3) {j2=2;}
else {do {j2=rand()%3;}while (j2==0);}
}
else if (niv==2)
{
if (n<=4) {j2=n-1;}
else if (n%4==0) {j2=3;}
else if (n%4==2) {j2=1;}
else if (n%4==3) {j2=2;}
else {do {j2=rand()%3;}while (j2==0);}
}
else
{
if (n==3) {do {j2=rand()%2;}while (j2==0);}
if (n==2) {j2=1;}
else {do {j2=rand()%3;}while (j2==0);}
}
printf("l'Ordinateur enleve %d allumettes\n", j2);
n=n-j2; nbfj2++;
if (n==1) {win(3,1,N, niv);}
else {jeu1vsordi(n, nbfj1, nbfj2, N, niv);}
}
}

int win(int jgagnant, int nbjoueurs, int n, int niv)


{
int choix;
switch(jgagnant)
{
case 1 :
case 2 : printf("\nBravo J%d, tu as gagne !", jgagnant); break;
default : printf("\nOrdi a gagne !");
}
printf("\nQue faire?\n");
printf("1 - Rejouer avec les memes parametres\n");
printf("2 - Revenir au menu initial\n");
printf("3 - Quitter");
scanf("%d", &choix);
switch (choix)
{
case 1 :
if (nbjoueurs==2) {jeu1vs1(n,0,0,n);}
else {jeu1vsordi(n,0,0,n, niv);}
break;
case 2 : menuall(); break;
case 3 : return EXIT_SUCCESS; break;
default : printf("\nJe n'ai pas compris...\n"); win(jgagnant, nbjoueurs, n,
niv);
}
return 0;
}

void centrer (const char* str)


{
unsigned int n;
for (n = 0; n < (LARGEUR_CONSOLE-strlen(str)) / 2; n++)
{
putchar(' ');
}
printf("%s", str);
}

int regles()
{
int choix;

centrer("\n\nLe but du jeu est simple:");


printf("\n\nCe jeu se joue a deux. Vous avez un nombre n d'allumettes.\n");
printf("A tour de role, chacun des deux joueurs enleve entre 1 et 3 allumettes
selon ce qu'il souhaite. Le perdant est celui qui doit enlever la derniere
allumette.\n");
printf("\nAttention, il existe 3 niveaux de difficulte en version humain vs
ordi.\n");
printf("Le 1er est plutot simple a battre, donc pour les debutants. Mais le
dernier.....\n");
printf("\n Que faire ?\n\n");
printf("1 - Jouer\n");
printf("2 - Quitter");
printf("\nVotre choix : ");
scanf("%d", &choix);
switch (choix)
{
case 1 : menuall(); break;
case 2 : return 0; break;
default : printf("\nJe n'ai pas compris votre
demande....");system("pause");regles();
}
return 0;
}

int main ()
{
int choix,i; // un entier qui determine le choix de l'utilisateur qui varie entre
1 et 4
system("cls"); // clear screen
for (i = 0 ; i < 10 ; i++) // ensemble d'instructions d'affichage pour afficher
la première page

{
printf("
\r");
Sleep(100);
centrer("PROJET REALISER PAR : khouloud jelassi Skander ben ahmed anouer ben dhafer
!\r");
Sleep(100);
} printf("\n\n\n");
centrer("**********************\n");
centrer("* Jeu des allumettes *\n");
centrer("**********************\n");
printf("\n\n");
centrer("Bonjour et bienvenue dans notre jeu des allumettes\n");
printf("\n Que faire ?\n\n");
printf("1 - Jouer\n");
printf("2 - Voir les regles du jeu\n");
printf("3 - Quitter");
printf("\n\nVotre choix : ");
scanf("%d", &choix); // fonction ) qui va tester le choix de l'utilisateur
switch (choix)
{
case 1 : menuall(); break;
case 2 : regles(); break;
case 3 : return 0; break;
default : printf("\n désolé votre demande n'est pas
valide ....");system("pause");

}
return 0;
}