IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Jeu CRAPS JAVA


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Informatique de Gestion
    Inscrit en
    Octobre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique de Gestion

    Informations forums :
    Inscription : Octobre 2017
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Jeu CRAPS JAVA
    Bonsoir,

    Pour un mini-projet scolaire, ils nous a été demandé de réaliser le code du jeu CRAPS en java.
    Celui-ci comporte des règles différentes.

    J'ai réalisé une structure du code mais rien n'à faire, je n'arrive pas à résoudre mon problème de boucle.

    ERREUR:
    * Mon programme est dans une boucle infinie.
    * Les chiffres de mes dés du premier tour sont toujours équivalent à ceux du 2e (et plus).

    Merci de votre aide !

    projet_Craps_BouleDeBoue.pdf
    CRAPS.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
     
    package Craps;
     
    import java.util.Random;
    import java.util.Scanner;
     
    public class CRAPS {
     public static void main(String[] args) {
      Random generateur = new Random();
      Scanner s = new Scanner(System.in);
     
      // Création des variables
      int d1 = (generateur.nextInt(6) + 1); // DES PREMIER TOUR
      int d2 = (generateur.nextInt(6) + 1);
      int d1t = (generateur.nextInt(6) + 1); // DES TOUR 2 ET +
      int d2t = (generateur.nextInt(6) + 1);
      int jeton = 10; // jeton de départ
      int mise = 0; // mise du joueur
      int cote = 2; // cote de la mise
      int tour = 1; // COMPTEUR TOUR 
      int somme = d1 + d2; // SOMME DES 2 D
      int but = 0; // BUT A ATTEINDRE 
      String win = "Gagné !";
      String lose = "Perdu !";
     
     
      // Règle
      String regle = "On joue au Craps à l'aide de deux dés. Chaque fois qu'on lance les dés, on prend la somme des deux\n" +
       "chiffres affichés. Au premier tour, le joueur gagne immédiatement s'il fait 7 ou\n" +
       "11 et perd immédiatement s'il fait 2, 3 ou 12. S'il fait un autre nombre, ce nombre devient son but et\n" +
       "il peut alors relancer les dés jusqu'à ce qu'il gagne la partie en reproduisant son but ou qu'il perde en\n" +
       "faisant 7.\n" +
       "Pour pimenter le jeu, le joueur mise des jetons avant de commencer une partie, sa mise allant de 1\n" +
       "au nombre de jetons qu'il possède. S'il gagne, il double sa mise, sinon, sa mise est perdue. Vous perdez lorsque\n" +
       "vous n'avez plus de jetons ou vous pouvez vous arreter en misant 0 jeton\n ";
     
      // ACCUEIL
      System.out.println("--BIENVENUE DANS LE JEU DU CRAPS--");
     
      // DEMANDE DE REGLE
      System.out.println("Si vous ne connaissez pas les règles, introduisez la valeur -5 sinon mettez un autre nombre");
      int rule = s.nextInt();
      if (rule == -5) {
       System.out.println(regle);
      }
      for (int q = 0; q <= 1000; q++) { // JETON + MISE   
       System.out.println("Vous avez " + jeton + " jeton(s)");
       System.out.print("Combien de jeton(s) voulez-vous misez ? (0 pour arrêter): ");
       mise = s.nextInt();
     
       //BOUCLE DES D TOUR 1
       while (tour == 1) {
     
        if (mise > 0 && mise <= jeton) {
         jeton -= mise;
         for (int i = 0; i < 1; i++) {
          // EXECUTION DES D
          System.out.println("Vous avez lancé: " + d1 + " et " + d2 + " au tour " + tour + " . Somme = " + somme);
         }
         // CONDITION GAGNE
         if (somme == 7 || somme == 11) {
          System.out.println(win);
          tour--;
          jeton += (mise * 2);
          System.out.println("vous avez maintenant " + jeton);
         } else { // PERDU
          if (somme == 2 || somme == 3 || somme == 12) {
           System.out.println(lose);
           tour--;
           System.out.println("Vous avez maintenant " + jeton);
          } else { //BUT
           System.out.println("Votre but à atteindre est  " + somme);
           but = somme;
          }
         }
        } else
        if (mise == 0) {
         System.out.println("A bientot !");
        } else
        if (mise > jeton || mise < 0) {
         System.out.println("Erreur de mise, Réintroduisez votre mise ");
         tour--;
        }
        tour++;
       }
       while (tour >= 2) {
        for (int i = 0; i < 1; i++) {
         // EXECUTION DES D
         System.out.println("Vous avez lancé: " + d1 + " et " + d2 + " au tour " + tour + " . Somme = " + somme);
        }
        // CONDITION DE SOMME TOUR 2 ET + (PERDU/GAGNE)
        if (somme == but) {
         System.out.println(win);
         tour = 1;
         jeton += (mise * 2);
         System.out.println("Vous avez maintenant " + jeton);
        } else {
         if (somme == 7) {
          System.out.println(lose);
          tour = 1;
          System.out.println("Vous avez maintenant " + jeton);
         } else if (somme != but && somme != 7) {
          tour++;
          System.out.println("Vous avez lancé: " + d1t + " et " + d2t + " au tour " + tour + " . Somme = " + somme);
         }
        }
       }
     
     
      }
     }
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Je vais commencé par répondre à la deuxième question : les tirages des dès ne changent pas à chaque tour, puisque tu les fais au début du programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int d1 = (generateur.nextInt(6) + 1); // DES PREMIER TOUR
      int d2 = (generateur.nextInt(6) + 1);
      int d1t = (generateur.nextInt(6) + 1); // DES TOUR 2 ET +
      int d2t = (generateur.nextInt(6) + 1);
    les valeurs des variables d1, d2, d1t et d2t ne changent plus ensuite.

    La ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int d1 = (generateur.nextInt(6) + 1);
    ne dit pas je définis une fonction que j'appellerais d1 telle que chaque fois que je l'appelle j'ai un nouveau nombre aléatoire... mais simplement je tire un nombre et je le mets dans d1. Ensuite d1 garde cette valeur tant qu'on met pas une autre valeur à la place. Il faut donc que tu appelles cette génération à chaque fois que c'est nécessaire. Du coup, d'ailleurs il n'y a plus besoin d'avoir des variables en double (d1 et d1t).

    Pour la question de la boucle, c'est déjà moins évident, déjà parce qu'il y a plusieurs boucles. Pourquoi nous obliger à chercher laquelle alors que tu aurais pu nous le dire tout simplement ?

    Ensuite, pour comprendre pourquoi une boucle tourne indéfiniment, il faut commencer par s'intéresser à la condition de bouclage : les variables qui y sont testées et ensuite comment les valeurs de ces variables changent dans le corps de la boucle.

    Par exemple, si on prend (je simplifie le code pour que ça soit plus édifiant) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while (tour >= 2) {
        // CONDITION DE SOMME TOUR 2 ET + (PERDU/GAGNE)
        if (somme == but) {
            tour = 1;
        } else {
           if (somme == 7) {
             	tour = 1;
    	} else if (somme != but && somme != 7) {
    		tour++;
    	}
       }
    }
    Si en entre dans cette boucle, c'est que tour>=2. somme ne change jamais dans le corps de la boucle, ni but, ni 7 non plus. Donc si somme n'est ni but ni 7, alors on incrémente tour, qui reste donc >=2 forcément, et on reboucle, avec les mêmes conditions, donc même résultat, donc on réincrémente tour, et on reboucle, comme ça, indéfiniment...


    Par ailleurs, pourquoi faire une boucle pour ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (int i = 0; i < 1; i++) {
    					// EXECUTION DES D
    					System.out.println(
    							"Vous avez lancé: " + d1 + " et " + d2 + " au tour " + tour + " . Somme = " + somme);
    				}
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. [Jeu 2D Java] Bomberman Melee
    Par Legendary dans le forum Projets
    Réponses: 4
    Dernier message: 16/08/2007, 15h09
  2. Utiliser un controler de jeu en java
    Par Seb33300 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 16/05/2007, 09h58
  3. Plateau de jeu à hexagones, Java ou Flash ? + aide
    Par PopovSquare dans le forum Développement 2D, 3D et Jeux
    Réponses: 16
    Dernier message: 03/03/2007, 00h59
  4. demande d'aide pour faire un plateau de jeu en java
    Par trodurlejava dans le forum Langage
    Réponses: 4
    Dernier message: 09/01/2007, 13h40
  5. Petit jeu en java
    Par Seth77 dans le forum 2D
    Réponses: 80
    Dernier message: 09/01/2006, 00h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo