Jeu des 13 allumettes en JAVA
Fermé
baka no emily
Messages postés
56
Date d'inscription
dimanche 25 mars 2007
Statut
Membre
Dernière intervention
13 mai 2012
-
9 nov. 2011 à 23:08
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 15 nov. 2011 à 14:05
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 15 nov. 2011 à 14:05
A voir également:
- Jeu des 13 allumettes en JAVA
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- 94 jeu - Télécharger - Puzzle & Réflexion
- Java apk - Télécharger - Langages
- Redmi note 13 5g test - Accueil - Téléphones
5 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
Modifié par KX le 9/11/2011 à 23:23
Modifié par KX le 9/11/2011 à 23:23
Ton problème vient de ta condition if (tourHumain = true) vers la ligne 60
Tu dois mettre l'opérateur == sinon ce n'est pas un test que tu fais mais une affectation.
Remarque : vu que c'est un boolean tu peux directement écrire if (tourHumain)
La confiance n'exclut pas le contrôle
Tu dois mettre l'opérateur == sinon ce n'est pas un test que tu fais mais une affectation.
Remarque : vu que c'est un boolean tu peux directement écrire if (tourHumain)
La confiance n'exclut pas le contrôle
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
12 nov. 2011 à 16:58
12 nov. 2011 à 16:58
Je viens de regarder en détail ton code
1) tu n'utilises pas boolean choixCorrect, tu peux faire comme ça :
2) avant de finir ta boucle do, tu dois inverser le joueur, lorsque c'est l'ordinateur qui joue, à ce moment là il serait intéressant d'afficher combien l'ordinateur a enlevé d'allumettes.
3) Je ne sais pas comment est faite la classe Generateur de ton prof, mais si elles sont faites comme les miennes, tu vas avoir une erreur si tu fais Generateur.nextInt(reste-1)+1; quand reste==1 car cela revient à choisir un nombre aléatoire entre 0 inclu et 0 exclu ce qui n'a pas de sens. Mais il suffit de gérer ce cas particulier pour passer outre cette erreur :
Pour information voici comment moi j'ai fait Console et Generateur pour tester ton code :
1) tu n'utilises pas boolean choixCorrect, tu peux faire comme ça :
if (!choixCorrect) continue; // recommence le do
2) avant de finir ta boucle do, tu dois inverser le joueur, lorsque c'est l'ordinateur qui joue, à ce moment là il serait intéressant d'afficher combien l'ordinateur a enlevé d'allumettes.
reste = reste - choix; // Retirer les allumettes prises par l'ordinateur tourHumain = true; System.out.println(choix);
3) Je ne sais pas comment est faite la classe Generateur de ton prof, mais si elles sont faites comme les miennes, tu vas avoir une erreur si tu fais Generateur.nextInt(reste-1)+1; quand reste==1 car cela revient à choisir un nombre aléatoire entre 0 inclu et 0 exclu ce qui n'a pas de sens. Mais il suffit de gérer ce cas particulier pour passer outre cette erreur :
if (reste >= 3) choix = Generateur.nextInt(3) + 1; else if (reste==1) choix = 1; else choix = Generateur.nextInt(2)+1;
Pour information voici comment moi j'ai fait Console et Generateur pour tester ton code :
class Console { private static final java.util.Scanner sc = new java.util.Scanner(System.in); public static String readString() { return sc.nextLine(); } public static void skipWhite() {} public static char readChar() { return sc.nextLine().charAt(0); } public static int readInt() { return Integer.parseInt(sc.nextLine()); } } class Generateur { private static final java.util.Random rd = new java.util.Random(); public static int nextInt(int i) { return rd.nextInt(i); } }
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
Modifié par KX le 12/11/2011 à 17:08
Modifié par KX le 12/11/2011 à 17:08
4) Si ton ordinateur est en mode (d)istrait, il peut prendre plus d'allumettes qu'il n'en reste !
En fait ce mode ne sert à rien... Il fait pareil que (n)aïf mais les bugs en plus !
D'ailleurs, la partie se continue lorsque tu as un nombre négatif d'allumettes ! Il faudrait faire :
En fait ce mode ne sert à rien... Il fait pareil que (n)aïf mais les bugs en plus !
D'ailleurs, la partie se continue lorsque tu as un nombre négatif d'allumettes ! Il faudrait faire :
while (reste>0);
baka no emily
Messages postés
56
Date d'inscription
dimanche 25 mars 2007
Statut
Membre
Dernière intervention
13 mai 2012
13 nov. 2011 à 13:23
13 nov. 2011 à 13:23
Merci beaucoup ! Je vais corriger tout ça
baka no emily
Messages postés
56
Date d'inscription
dimanche 25 mars 2007
Statut
Membre
Dernière intervention
13 mai 2012
13 nov. 2011 à 13:24
13 nov. 2011 à 13:24
Pour le mode distrait il s'agit en fait de jouer en mode naïf ou en mode expert selon le niveau de distraction de l'ordinateur, je ne sais pas trop comment faire ça.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
13 nov. 2011 à 13:33
13 nov. 2011 à 13:33
Une idée :
boolean intelligent; switch (niveau) { case 'n': case 'N': intelligent=false; break; case 'd': case 'D': intelligent=(Generateur.nextInt(2)==1); break; case 'e': case 'E': intelligent=true; break; } if (intelligent) { if (reste % 4 == 1) choix = 1; else choix = (reste - 1) % 4; } else { if (reste >= 3) choix = Generateur.nextInt(3) + 1; else if (reste==1) choix = 1; else choix = Generateur.nextInt(2)+1; }
baka no emily
Messages postés
56
Date d'inscription
dimanche 25 mars 2007
Statut
Membre
Dernière intervention
13 mai 2012
13 nov. 2011 à 14:56
13 nov. 2011 à 14:56
Intéressant ! Je vais méditer là dessus.
Ceci étant dit je n'ai pas compris la partie sur le choixCorrect (conseil 1) ) :
Dans mon code il "reçoit" faux au départ (je ne sais pas trop pourquoi d'ailleurs, conseil du prof) et donc je parcours un peu tous les cas d'erreur et ainsi si nous ne sommes dans aucun de ces cas de figure il reçoit vrai. Est-ce insuffisant ?
Ceci étant dit je n'ai pas compris la partie sur le choixCorrect (conseil 1) ) :
Dans mon code il "reçoit" faux au départ (je ne sais pas trop pourquoi d'ailleurs, conseil du prof) et donc je parcours un peu tous les cas d'erreur et ainsi si nous ne sommes dans aucun de ces cas de figure il reçoit vrai. Est-ce insuffisant ?
baka no emily
Messages postés
56
Date d'inscription
dimanche 25 mars 2007
Statut
Membre
Dernière intervention
13 mai 2012
9 nov. 2011 à 23:11
9 nov. 2011 à 23:11
Houla désolé c'est imbuvable, j'ai perdu l'indentation.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
9 nov. 2011 à 23:20
9 nov. 2011 à 23:20
Ne t'inquiètes pas on a l'habitude ^^
La prochaine fois tu utiliseras les balises de code :
La prochaine fois tu utiliseras les balises de code :
<code> code indenté</code>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
baka no emily
Messages postés
56
Date d'inscription
dimanche 25 mars 2007
Statut
Membre
Dernière intervention
13 mai 2012
9 nov. 2011 à 23:36
9 nov. 2011 à 23:36
Génial ! Merci beaucoup, réponse super rapide en plus.
Je ne peux pas vérifier si cela marche parce que mon mac ne reconnait pas "la classe Generateur" mais à l'école ça devrait marcher je pense et j'espère.
Bonne soirée
Je ne peux pas vérifier si cela marche parce que mon mac ne reconnait pas "la classe Generateur" mais à l'école ça devrait marcher je pense et j'espère.
Bonne soirée
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
10 nov. 2011 à 00:11
10 nov. 2011 à 00:11
En effet, les classes Console, et Generateur n'existent pas dans la librairie standard, mais tu peux demander à ton prof de te passer la bibliothèque à ajouter pour l'utiliser chez toi.
Remarque : parfois il suffit de taper le nom du prof sur Google, pour trouver sa page web, et la bibliothèque qu'il utilise... d'autant que ce n'est pas forcément lui qui l'a faite ;-)
Tu peux aussi apprendre à te servir de l'API standard et ainsi ne pas avoir ce genre de problèmes, même si pour l'instant ton prof t'impose cette bibliothèque pour commencer en douceur avec Java :)
Remarque : parfois il suffit de taper le nom du prof sur Google, pour trouver sa page web, et la bibliothèque qu'il utilise... d'autant que ce n'est pas forcément lui qui l'a faite ;-)
Tu peux aussi apprendre à te servir de l'API standard et ainsi ne pas avoir ce genre de problèmes, même si pour l'instant ton prof t'impose cette bibliothèque pour commencer en douceur avec Java :)
baka no emily
Messages postés
56
Date d'inscription
dimanche 25 mars 2007
Statut
Membre
Dernière intervention
13 mai 2012
12 nov. 2011 à 16:11
12 nov. 2011 à 16:11
Oui je lui demanderai ça, pour ce qui est de la classe Console je l'ai ajouté et j'ai énormément galéré rien que pour ça ahah.
Ceci étant dit : Avant seul l'utilisateur pouvais jouer j'ai donc corrigé l'erreur comme vous me l'avez indiqué mais maintenant l'utilisateur ne peut faire que le premier coup ensuite seul l'ordinateur joue. J'ai réalisé qu'à la fin du tour ordinateur j'avais oublié un tourHumain donc je l'ai ajouté mais ça ne fonctionne quand même pas.
Si vous avez une idée ...
Ceci étant dit : Avant seul l'utilisateur pouvais jouer j'ai donc corrigé l'erreur comme vous me l'avez indiqué mais maintenant l'utilisateur ne peut faire que le premier coup ensuite seul l'ordinateur joue. J'ai réalisé qu'à la fin du tour ordinateur j'avais oublié un tourHumain donc je l'ai ajouté mais ça ne fonctionne quand même pas.
Si vous avez une idée ...