Jeu dallumette en langage C

popo42 -  
Winfly Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

nous devons réaliser le jeu d'allumette, la dernière du tas en langage c. mon programme compile en silence mais quand je l'éxecute il ne se passe rien. je n'arrive pas a trouver mes erreurs, svp aidez moi.
voila mon programme


#include <stdio.h>
#include <stdlib.h> /*bibliotheque contenant la fonction aleatoire*/

/*declarations de constantes et de types*/
void Usage (char*s){
printf ("Usage %s",s);
printf("<nb_allumettes>");
printf("\n");
}

void coup_uti(int nb_allumettes, int trait) {/*pour l'utilisateur*/
int nb;

if(trait==0){ /*trait= nb d'allumette enlevé*/
while (nb!=1 || nb!=2){
/*nb = nb d'allumette a enlever choisi par le joueur*/
printf ("vous devez donner un nb entre 1 et 2\n");
printf("Combien en prenez-vous : ");
}
printf("j'en prends %d\n",nb);
}
else{
while (nb>trait*2){
printf("vous devez prendre un nb d'allumette inférieure\n");
printf("à 2 fois le nb d'allumette pris \n");
printf("précedemment par votre adversaire\n");
printf("Combien en prenez-vous : ");
}
printf("J'en prends %d\n",nb);
nb_allumettes=nb_allumettes-nb;/*nb_allumette s= celle encore en jeu*/
printf("Il en reste %d\n",nb_allumettes);
}
}



/*declarations de fonctions*/
int main(int argc, char *argv[]) {
int nb_allumettes;
int trait;
int nb,b;

/*decodage et controle des arguments*/
if(argc < 3) {
Usage(argv [0]);
exit(-1);
}



nb_allumettes=atoi(argv[1]);
trait=atoi(argv[2]);
while(nb_allumettes > 0) {
coup_uti(nb_allumettes,trait);

/* à l'ordi de jouer*/
printf("a l'ordinateur de jouer !\n");

/*stratégie pour gagner, ramener l'autre a prendre la
5ème allumette,la 9ème,la 13ème...
en suivant la suite Un= Un-2 + Un-1; avec U0=0 et U1=1*/

if ((nb_allumettes<9)&(nb_allumettes>5)){
nb=(nb_allumettes-5);
if (nb>trait*2)
nb=1;
else
nb=nb;
}
if ((nb_allumettes<13)&(nb_allumettes>9)){
nb=(nb_allumettes-9);
if (nb>trait*2)
nb=1;
else
nb=nb;
}
if ((nb_allumettes<17)&(nb_allumettes>13)){
nb=(nb_allumettes-13);
if (nb>trait*2)
nb=1;
else
nb=nb;
}
if ((nb_allumettes<21)&(nb_allumettes>17)){
nb=(nb_allumettes-17);
if (nb>trait*2)
nb=1;
else
nb=nb;
}
if (nb_allumettes==21)
nb=1;
else if (nb_allumettes >21)
nb=rand();

printf("L'ordinateur retire %d allumettes.\n",nb);
nb_allumettes=nb_allumettes-nb;
}


if(nb_allumettes==0){
if (b==1);
/*Marqueur de "dernier joueur" a avoir retire
la ou les allumettes ce qui nous servira
a la fin pour afficher le vainqueur.*/

printf("Vouz gagnez !");
}
else{
printf("Je gagne !");
}
return(0);
}


Merci
A voir également:

2 réponses

tchairo Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   45
 
0
Winfly Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   2
 
Il se rend jusqu'ou ton programme car si tu ne voit rien mes toi des trace ex :

*** VOTRE fonction MAIN

/*declarations de fonctions*/
int main(int argc, char *argv[]) {
int nb_allumettes;
int trait;
int nb,b;

printf("Avant exit()")

/*decodage et controle des arguments*/
if(argc < 3) {
Usage(argv [0]);
exit(-1);
}

printf("Apres exit()")

nb_allumettes=atoi(argv[1]);
trait=atoi(argv[2]);
while(nb_allumettes > 0) {
coup_uti(nb_allumettes,trait);
0