Prob programmation en C

exelo316 Messages postés 50 Statut Membre -  
 loupius -
Bonjour,alors voila: je fais du code en c (un pierre feuille ciseaux). je demande à l'utilisateur de rentrer un nombre entre 1 et 3 pour choisir la feuille, la pierre, etc. Mais si il rentre 0 (ou un autre nombre), le prog continue! Z'avez pas une solution pour terminer le prog svp? Merci
Configuration: Linux
Firefox 3.0.14

7 réponses

  1. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Yo!

    Tout dépend du code, tu veux pas le poster?
    0
  2. mi_fa
     
    montre nous ton code pour que l'on puisse t'aider.
    0
  3. exelo316 Messages postés 50 Statut Membre 30
     
    ok merci les gars, mais mes problèmes ont changé (j'éspère que vous pourrez toujours m'aider) je poste la question qu j'ai posée sur un autre forum:

    J'ai essayé de créer un jeu pierre-feuille-ciseaux, cependant, bien que la compilation fonctionne, je me heurte à plusieurs problèmes.
    int problème_1 (lol) L'IA, bien qu'elle soit gérée aléatoirement, quand je lui demande un nombre entre 1 et 3, me renvoie toujours 1.
    Deuxème problème : la feuille est représentée par le nombre 1, les ciseaux par le 2, et la pierre par le 3. Dans mon jeu, pierre est plus fort que ciseaux (normal), ciseaux est plus fort que feuille, mais pierre est plus fort que feuille! :colere2:
    troisième problème: le jeu est censé s'arrêter quand un des joueurs a gagné trois manches, mais ce n'est pas le cas! ma boucle est;
    while (scoreJ<3 || scoreO<3), scoreJ étant le score du joueur et scoreO, celui de l'ordi. Je vous remercie d'avance et vous poste illico mon code source (licence libre, faites-en ce que vous voulez ;) ) :

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main(int argc, char *argv[])
    {
    //Déclarations
    int objetchJ=0;
    int objetchO=0;
    const int MIN=1, MAX=3;
    int count=0;
    int scoreJ=0;
    int scoreO=0;
    //Prog
    //Choix ordi
    srand(time(NULL));
    objetchO = (rand() % (MAX - MIN + 1)) + MIN;
    //Boucle
    while (scoreJ<3 || scoreO<3)
    {
    //incrémentation
    count++;
    //Intro
    printf("\t\tPIERRE-FEUILLE-CISEAUX\n\t\tManche n°%d\n\n", count);
    printf("Tapez 1 pour choisir la feuille, 2 pour choisir les ciseaux, et 3 pour choisir \nla pierre.\n");
    //Choix joueur
    scanf("%d", &objetchJ);
    //Affichage du choix du joueur
    switch (objetchJ)
    {
    case 1:
    printf("Vous avez choisi la feuille.\n");
    break;
    case 2:
    printf("Vous avez choisi les ciseaux.\n");
    break;
    case 3:
    printf("Vous avez choisi la pierre.\n");
    break;
    default :
    printf("Vous n'avez rien choisi.\n");
    objetchJ=0;
    break;
    }
    // Affichage du choix de l'ordi
    switch (objetchO)
    {
    case 1:
    printf("L'ordinateur a choisi la feuille.\n");
    break;
    case 2:
    printf("L'ordinateur a choisi les ciseaux.\n");
    break;
    case 3:
    printf("L'ordinateur a choisi la pierre.\n");
    break;
    }
    //Condition
    if(objetchJ>objetchO)
    {
    printf("Vous avez battu l'ordinateur sur cette manche!\nVous marquez 1 point.\n");
    scoreJ++;
    }
    else if(objetchJ<objetchO)
    {
    printf("L'ordinateur vous a battu sur cette manche!\nIl marque 1 point.\n");
    scoreO++;
    }
    else
    {
    printf("Égalité!\nAucun point n'est marqué.\n");
    }
    }
    printf("SCORE:\nOrdinateur: %d\tVous: %d", scoreO, scoreJ);
    if(scoreJ<scoreO)
    {
    printf("Bravo, vous avez perdu !\n");
    }
    else if(scoreJ>scoreO)
    {
    printf("Félicitations, vous avez gagné !\n");
    }
    return 0;
    }

    MERCI D'AVANCE!
    0
    1. loupius
       
      Encore un programme illisible !
      De quoi décourager les 'pas trop courageux du dimanche matin' dont je dois faire partie !
      Dommage, je suis certain que les erreurs étaient très faciles à trouver ;-)
      Je te souhaite d'en trouver - au moins - un plus courageux que moi.
      Salut.
      0
  4. Dora The Explorer Messages postés 3447 Date d'inscription   Statut Contributeur Dernière intervention   854
     
    En mettant un return 0; dans ledefault de ton switch?

    Faut vraiment que je m'y remette moi :(

    EDIT: j'ai survolé donc voilà j'ai ptet rien dit hein ;p
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. exelo316 Messages postés 50 Statut Membre 30
     
    Si il est illisible, indiquez moi comment le rendre plus facile à comprendre. Me fait-on grief d'un manque de commentaires ? J'attends vos réponses ! Le seul problème qui subsiste est que la boucle continue de tourner même si la condition n'est plus vérifiée. Pouvez-vous m'aider?
    Boucle:
    while (scoreJ<3 || scoreO<3)
    0
    1. loupius
       
      troisième problème: le jeu est censé s'arrêter quand un des joueurs a gagné trois manches, mais ce n'est pas le cas! Ma boucle est: while (scoreJ<3 || scoreO<3)
      Si ce n'est pas le cas c'est que la condition de la boucle est mal posée. Je propose de remplacer || par &&.
      Bonne journée.
      0
  7. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Exelo, est ce que tu pourrais reposter ton code en utilisant les balises code s'il te plait?

    Parce que c'est vrai que pour nous c'est vraiment pas lisible.
    Les balises code conservent l'indentation.

    Par exemple si je poste le code suivant avec des tabulations:

    if (a != 1) {
    if (a != 2) {
    if (a != 3) {
    printf("prout");
    }
    }
    }

    Eh bien il perd les tabulations.
    En revanche entre les balises
    <code>
    </code>:
    if (a != 1) {
        if (a != 2) {
            if (a != 3) {
                 printf("prout");
            }
        }
    }

    Les tabulations sont conservées.
    0
    1. loupius
       
      On devrait garder ta réponse comme exemple.
      Bonne journée.
      0
  8. exelo316 Messages postés 50 Statut Membre 30
     
    le truc c'est que le code, je le tape comme ca....=S
    0