Au secour!!:Jeu d'allumette en language C

Fermé
Rulliette - 29 nov. 2007 à 17:30
 èfè - 9 avril 2010 à 14:29
Bonjour,
Alors je vais essayer de bien m'exprimer...:p
J'ai un gros problème...je suis actuellement étudiante en seconde année de physique chimie..Et j'ai aussi de la programmation impérative au programme...
Malheureusement pour moi c'est vraiment du chinois!!J'aurrai besoin d'aide pour réaliser un programme se nommant: 'la dernière du tas' , c'est un jeu d'allumettes.
Il faut que je crée entièrement le programme...ce qui me fait bien peur...vu le temps que il me reste...
J'ai peu d'idées pour créer ce programme. On nous donne le sujet suivant:

La donnée du programme en ligne de commande devra être le nombre maximal d'allumettes, ainsi que la mention du joueur qui commence (l'utilisateur ou bien votre programme).

Ensuite votre programme initialisera le nombre d'allumettes, puis engagera une boucle d'interaction avec l'utilisateur, terminée lorsqu'il ne reste plus aucune allumette. Le gagnant est alors celui qui n'a pas la main.

Un exemple d'exécution pourrait être le suivant :

> derniere
Usage : derniere <nb allumettes> <trait>
<nb allumettes> entier < 1000,
<trait> = u(tilisateur) ou p(rogramme)
> nim 16 p

Il y a 16 allumettes.

J'enlève 2 allumettes.

Il y a 14 allumettes.
Combien en enlevez-vous (entre 1 et 4) : 8

On vous demande un entier compris entre 1 et 4 !!!

Combien en enlevez-vous (entre 1 et 4) : 1

Il y a 13 allumettes.

J'enlève 1 allumette.

Il y a 12 allumettes.
Combien en enlevez-vous (entre 1 et 2) : 1

Il y a 11 allumettes.

J'enlève 2 allumettes.

Il y a 9 allumettes.
Combien en enlevez-vous (entre 1 et 4) : 1

Il y a 8 allumettes.

J'enlève 1 allumette.

Il y a 7 allumettes.
Combien en enlevez-vous (entre 1 et 2) : 2

Il y a 5 allumettes.

J'enlève 2 allumettes.

Il y a 3 allumettes.
Combien en enlevez-vous (entre 1 et 4) : 3

Il ne reste plus d'allumettes, vous avez gagne.
>
La forme de l'affichage est libre, pourvu qu'elle soit claire (il y aurait à redire sur l'exemple ci-dessus, mais je ne vais quand même pas faire votre travail !).

Remarquez le contrôle effectué lors de l'entrée par l'utilisateur : il est réalisé par la fonction de lecture d'un entier au clavier, lire_entier.

( nous n'avons pas besoin de creer la fonction de lecture d'un entier, il faut juste l'incrémenter dans le programme...)



J'aurrai bien aimer un petit peu d'aide de votre part!!
Merci d'avance a tous ceux qui peuvent m'aider!!!

Je ne suis pas desperée...mais presque...:p

4 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
29 nov. 2007 à 18:18
Salut,

J'ai fait vite fait le squelette du programme. Il te reste quelques points à travailler :
Gestion du nombre d'allumettes par l'humain : entre 1 et 4, vérifier qu'il reste un nombre positif ou nul d'allumettes sur la table.
Gestion de l'IA, il existe une petite formule bien utile sur ce jeu, à base de modulo. Je te laisse réfléchir un peu ;)

#include <stdio.h>

void coup(int *nb_allumettes, int trait) {
    int nb; 
    
    if(trait==0){
        printf("Combien en prenez-vous : ");
        scanf("%d",&nb);
    }
    else{
        nb=1;
        printf("J'en prends %d\n",nb);
    }
    *nb_allumettes-=nb;
}



int main(int argc, char **argv) {
    
    int nb_allumettes;
    int trait;
    
    if(argc != 3) {
            puts("nim nombre tour");
            exit(-1);
    }
    
    nb_allumettes=atoi(argv[1]);
    trait=argv[2][0]=='p'?0:1;
    while(nb_allumettes > 0) {
                        coup(&nb_allumettes,trait);
                        printf("Il en reste %d.\n",nb_allumettes);
                        trait=(trait+1)%2; 
    }
    if(trait==0)
        puts("Vouz gagnez !");
    else
        puts("Je gagne !");
    
    system("pause");
    
    return 0;
}



Je reste à ta disposition, si tu as besoin d'aide ;)
4