Aide avec mon programme
new_potato
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour a tous, présentement je rencontre un problème avec mon programme testCraps. Le but est de faire en sorte que les dés continue de relancer tant et aussi longtemps que leur somme ne soit ni 4, 5, 6, 8, 9 ou 10. Or quand je le compile, cela ne se compile pas comme prévu: soit ça s'arrête, soit ça n'affiche pas du tout et je n'arrive pas à cerner le problème. Si quelqu'un peut m'aider, ce serait fantastique. toutes les classes, ainsi que le main se trouve en-dessous ainsi que les résultats de la compilation. N'hésitez pas à me poser des questions.
les resultat que j'obtient


public class De { private int NBFACE=6; private int face; Random generateur= new Random(); public De() { lancer(); } public int getFace() { return face; } public int lancer(){ face= generateur.nextInt(NBFACE)+1; return face; } }
public class JeuCraps { private De de1; private De de2; private int valeur; private static int nbEssai; public JeuCraps() { this.de1=new De(); this.de2=new De(); } public De getDe1() { return de1; } public void setDe1(De de1) { this.de1 = de1; } public De getDe2() { return de2; } public void setDe2(De de2) { this.de2 = de2; } public int getValeur() { return valeur; } public void setValeur(int valeur) { this.valeur = valeur; } public boolean relancer(){ nbEssai++; boolean msg = false; lancerLesDes(); if((de1.getFace()+de2.getFace())==4){ msg=true; }else if((de1.getFace()+de2.getFace())==5){ msg=true; }else if((de1.getFace()+de2.getFace())==6){ msg=true; }else if((de1.getFace()+de2.getFace())==8){ msg=true; }else if((de1.getFace()+de2.getFace())==9){ msg=true; }else if((de1.getFace()+de2.getFace())==10){ msg=true; }if((de1.getFace()+de2.getFace())==7||(de1.getFace()+de2.getFace())==11) { msg=false; gagne(); } return msg; } public void lancerLesDes(){ de1.lancer(); de2.lancer(); } public static int getNbEssai() { return nbEssai; } public static void setNbEssai(int nbEssai) { JeuCraps.nbEssai = nbEssai; } public boolean gagne(){ lancerLesDes(); boolean message=false; if((de1.getFace()+de2.getFace())==7||(de1.getFace()+de2.getFace())==11) message=true; return message; } }
public class testCraps { public static void main(String[] args) { JeuCraps jeu= new JeuCraps(); boolean rejouer; int de1= jeu.getDe1().getFace(); int de2= jeu.getDe2().getFace(); int craps= de1+de2; System.out.println("De1\tDe2\tEtat:"); do{ rejouer= jeu.relancer(); //System.out.println(jeu.getDe1().getFace()+"\t"+jeu.getDe2().getFace()); if(rejouer) System.out.println(jeu.getDe1().getFace()+"\t"+jeu.getDe2().getFace()+"\t"+"relancer\n"); else System.out.println(jeu.getDe1().getFace()+"\t"+jeu.getDe2().getFace()+"\t"+"vous avez gagné"); }while(rejouer); } }
les resultat que j'obtient



A voir également:
- Aide avec mon programme
- Programme demarrage windows - Guide
- Message programmé iphone - Guide
- Mettre en veille un programme - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
2 réponses
tu a penser a faire une boucle while?
tu pourrais déclarer une variable boolean et dès que tu obtient la ou les somme voulue(s) elle passe de true à false et ta boucle se déclarerais
par exemple
et si tu a moins de solution que d'échecs dans ton lancé de dés, tu devrais faire des if pour tes solutions, ça allègerait ton programme en sorte ;)
tu pourrais déclarer une variable boolean et dès que tu obtient la ou les somme voulue(s) elle passe de true à false et ta boucle se déclarerais
while key == true do
par exemple
et si tu a moins de solution que d'échecs dans ton lancé de dés, tu devrais faire des if pour tes solutions, ça allègerait ton programme en sorte ;)
iDarkMaster
Messages postés
97
Date d'inscription
Statut
Membre
Dernière intervention
2
excuse moi je crois que je fait erreur avec du lua, je croyais pouvoir t'aider mais je crois que d'autres seront plus en mesure que moi mais si je ne fait pas erreur, une boucle while devrais se faire:
new_potato
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
>
iDarkMaster
Messages postés
97
Date d'inscription
Statut
Membre
Dernière intervention
Ça fonctionne bien avec le while, mais par contre ç'a généré un autre problème: maintenant les dés ne sont plus lancés aléatoirement.
iDarkMaster
Messages postés
97
Date d'inscription
Statut
Membre
Dernière intervention
2
si tu fait une methode d'aléatoire d'une valeur de 1 à 6(inclus) tu la mets dans ta boucle while et si tu a une solution c'est elle qui va arrêter ta boucle
Bonjour,
En copiant-collant ton code, je ne vois pas le problème.
Je l'ai lancé plusieurs fois et le programme se termine tout le temps avec un résultat qui ressemble à ce que tu veux.
Si tu constates que ton programme ne se termine pas (qu'il reste bloqué sans rien faire) tu peux exécuter ces commandes là :
Ce résultat devrait permettre de savoir où en est le programme dans son exécution et donc repérer l'endroit où se trouvent les points de blocage.
Remarque : jps et jstack sont des commandes fournis avec le JDK comme java et javac, il faut donc avoir configuré la variable JAVA_HOME dans le PATH pour pouvoir y accéder.
En copiant-collant ton code, je ne vois pas le problème.
Je l'ai lancé plusieurs fois et le programme se termine tout le temps avec un résultat qui ressemble à ce que tu veux.
Si tu constates que ton programme ne se termine pas (qu'il reste bloqué sans rien faire) tu peux exécuter ces commandes là :
jps -lqui te renverra la liste des processus Java en cours avec leur numéro (cela te permet d'identifier ton programme)
jstack 1234qui t'affichera l'état du processus (1234 est à remplacer par le numéro obtenu via le jps correspondant à ton programme)
Ce résultat devrait permettre de savoir où en est le programme dans son exécution et donc repérer l'endroit où se trouvent les points de blocage.
Remarque : jps et jstack sont des commandes fournis avec le JDK comme java et javac, il faut donc avoir configuré la variable JAVA_HOME dans le PATH pour pouvoir y accéder.