Motus en Java dans une console.

Fermé
leo1342 Messages postés 1 Date d'inscription lundi 7 janvier 2019 Statut Membre Dernière intervention 7 janvier 2019 - Modifié le 7 janv. 2019 à 23:32
nishakale Messages postés 2 Date d'inscription vendredi 1 février 2019 Statut Membre Dernière intervention 4 février 2019 - 1 févr. 2019 à 06:18
Bonsoir,

Je dois programmer un motus en java. Les boucles s'opèrent plusieurs fois sur la troisième lettre. Je ne vois ou son mes erreurs dans le code.... Merci beaucoup de votre aide.
voici le code :
Bonsoir,

Je dois réaliser un jeu Motus en Java pour un devoir d'info. J'ai commencé à travailler au papier et j'ai ensuite coder mes idées. Mon problème est : Le code compile mais une fois exécuté le programme qui gère l'attribution des couleurs se fait plusieurs fois sur la troisième lettre. Mon problème est dans les boucles mais je ne trouve pas où..... Merci d'avance pour votre aide, je suis un peu perdu !!


Voici le code :

public class MotusBasique {

    public static void main(String[] args) {
//Déclaration des variables 
        int i, A, LongueurMot, j, I, J, D;
        String N1, N2, Mot;
        char[] T1 = new char[7];
        char[] T2 = new char[7];
        char[] T3 = new char[7];
//introduction 
        i = 0;
        j = 0;
        D = 0;
        System.out.println("Vous commencez une partie de motus. Le premier joueur entre un mot de 7 lettres inconnu du joueur 2. Le joueur 2 va ensuite tenter de le deviner.");
        System.out.println();
        System.out.println("Entrer 1 pour commencer a jouer. Bonne chance !");
        A = Lire.i();
//déclenchement du jeu 
        if (A == 1) {
            System.out.println("Nom du joueur 1:");
            N1 = Lire.S();
            System.out.println("Nom du joueur 2:");
            N2 = Lire.S();
            System.out.println(N1 + " entrez un mot de 7 lettres:");
            Mot = Lire.S();
//vérification de la longueur du mot et contrôle de saisie 
            LongueurMot = Mot.length();
            while (LongueurMot != 7) {
                System.out.println("Veuillez entrez un mot de 7 lettres.");
            }
//Tableau avec le mot à trouver 
            for (i = 0; i <= 6; i++) {
                T1[i] = Mot.charAt(i);
            }
//Début de l'algorithme de jeu 
            for (I = 0; I <= 6; I++) {
                while (T1[I] != T2[I]) {
                    for (J = 0; J <= 6; J++) {
                        System.out.print(T2[J]);
                    }
                    System.out.println(N2 + " essayer un mot");
                    Mot = Lire.S();
                    for (J = 0; J <= 6; J++) {
                        T2[J] = Mot.charAt(J);
                    }
//Algorithme de traitement des couleurs selon les lettres saisies par le joueur. 
                    for (i = 0; i <= 6; i++) {
//Partie pour définir la couleur des lettres bien placées. 
                        if (T2[i] == T1[i] && i != 0) {
                            T3[i] = T2[i];
                            System.out.println("La lettre " + T2[i] + " s'affiche en rouge.");
                        }
//Partie pour définir la couleur des lettres mauvaises. 
                        for (j = 1; j <= 6; j++) {
                            if (T2[i] != T1[j]) {
                                D = D + 1;
                            }
                            if (D == 6) { // compteur D pour vérifier que la lettre selectionée est bien différente de
                                          // toute les autres.
                                T3[i] = x;
                                System.out.println("La lettre " + T2[i] + " s'affiche en bleue.");
                            }
                        }
//Partie pour definir la couleur des lettres qui sont dans le mot mais au mauvais endroit. 
                        for (j = 1; j <= 6; j++) {
                            if (T2[i] == T1[j] && j != i) {
                                System.out.println("La lettre " + T2[i] + " s'affiche en orange.");
                                T3[i] = x;
                            }
                        }
                    }
                    for (i = 0; i <= 6; i++) {
                        System.out.print(T3[i]);
                    }
                }
            }
        }
    }
}
A voir également:

2 réponses

tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
29 janv. 2019 à 11:01
Bonjour,

Je sais que ce n'est pas du tout une aide mais un conseil :
  • Renommez vos variables pour une meilleure lisibilité, au milieu j'e me suis perdu entre T1, T2 etc
  • Les indices des boucles en minuscule, le majuscule est utilisé pour les constantes, c'est pas obligatoire mais c'est une convention.
  • Divisez ce code en plusieurs fonctions, chaque fonction fait une chose.


Une remarque :
Si le joueur introduit un mot différent de 7 lettres, le message d'erreur s'affiche mais l'exécution va continuer normalement.
0
nishakale Messages postés 2 Date d'inscription vendredi 1 février 2019 Statut Membre Dernière intervention 4 février 2019
1 févr. 2019 à 06:18
Excellent topic. Thank you.
0