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 :

Besoin d'aide pour un cours d'initiation à la programmation JAVA! (Sudoku) Merci! :)


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Septembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Septembre 2014
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Besoin d'aide pour un cours d'initiation à la programmation JAVA! (Sudoku) Merci! :)
    Bonjour,

    Je suis en train de suivre un cours d'initiation à la programmation JAVA et je me bute à ce TP depuis plusieurs semaines. Je ne comprends pas grand chose et j'ai besoin d'aide pour regarder mon code et peut-être me remettre sur le droit chemin!! Le TP n'est pas très clair à la base ce qui n'aide pas non plus!

    Si quelqu'un peut m'aider à y voir clair!!

    merci!!!



    Créer des classes
    Le programme devra être développé autour de plusieurs classes soit :

    tp4.java permettant de démarrer le programme. Cette classe aura une méthode main qui devra faire comme actions :
    Créer une instance de la classe Sudoku9x9;
    Imprimer la grille de Sudoku original;
    Imprimer le degré de difficulté de la grille;
    Effectuer 10 placements;
    Imprimer la grille de Sudoku suite aux placements;
    Annuler 2 placements;
    Imprimer la grille de Sudoku suite à l’annulation;
    Valider la solution et imprimer le résultat de la validation.
    Sudoku.java, une classe abstraite représentant la notion abstraite de grille de Sudoku et des méthodes communes à tous les sous-types de grille de Sudoku. Elle aura donc comme attribut :
    Une matrice de nombre entier (int[][]) représentant la grille de Sudoku
    Une liste d’action de placement (Une ArrayList de classe Placement (voir plus bas))
    Le degré de complexité de la grille (int)
    L’attribut placement (int) indiquant le nombre de chiffre restant à placer dans la grille
    Elle aura comme méthodes abstraites ou non :

    Initialiser une grille
    Réinitialiser la grille (revenir à la grille de Sudoku originale) à l’aide de la liste de placements effectués. Vous devez concevoir la solution par vous-même!
    Tester la validité de la solution (voir code en annexe)
    Faire un placement (voir plus bas au point 5)
    Annuler un placement (voir plus bas au point 5)
    Méthodes get et set pour accéder aux attributs de classes (attention à la visibilité des méthodes, c.a.d. public, private, protected).
    Imprimer la grille
    Sudoku9x9.java, une sous-classe de Sudoku.java qui implémente les méthodes spécifiques à un Sudoku9x9, soit :
    Les sous-implémentations des méthodes abstraites de la classe Sudoku.java
    Toutes autres méthodes nécessaires pour effectuer le mandat
    Case.java, une classe représentant une case de la grille. Cette classe sera utilisée par la méthode placement et annuler placement afin de garder un trace des actions sur la grille de jeu. À vous de déterminer quels sont ces attributs et méthodes pour répondre aux besoins de la problématique. À vous également de spécifier sa visibilité et de la justifier.
    Créer des appels de méthodes
    Au travers de votre conception orientée-objet, répondant à la problématique, les différentes instances de classes auront à interagir entre elles. Elles s’échangeront des appels de méthodes permettant de répondre aux besoins du mandat, soit (rappel du comportement de la classe tp2.java) :

    Créer une instance de la classe Sudoku9x9;
    Imprimer la grille de Sudoku original;
    Imprimer le degré de difficulté de la grille;
    Effectuer 10 placements;
    Imprimer la grille de Sudoku suite aux placements;
    Annuler 2 placements;
    Imprimer la grille de Sudoku suite à l’annulation;
    Valider la solution et imprimer le résultat de la validation.
    Faire et annuler des placements
    Grâce à la classe Case, il est possible de sauvegarder une trace des actions du joueur sur la grille. À l’aide de la méthode, fairePlacement, vous aurez à (1) effectuer le placement sur la grille; (2) sauvegarder le placement (c’est à dire l’instance de la classe Case) dans un structure de type ArrayList..

    À l’aide de la méthode annulerPlacement, vous aurez à (1) récupérer la dernière instance dans l’arraylist (en utilisant la méthode remove et la méthode size pour connaître le nombre d’élément) et (2) annuler le placement dans la grille.

    Pour plus d’information sur les ArrayList, aller à la page : http://docs.oracle.com/javase/7/docs...ArrayList.html (en anglais seulement).

    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
    Code de validation de la grille Sudoku
    public boolean validate() {
    // un tableau : int[][] board = new int[9][9]();
    // initialisation et actions sur le Sudoku
     
    //Vérifie les lignes et les colonnes 
    for (int i = 0; i < board.length; i++) {
    BitSet bsRow = new BitSet(9);
    BitSet bsColumn = new BitSet(9);
    for (int j = 0; j < board[i].length; j++) {
    if (board[i][j] == 0 || board[j][i] == 0) continue;
    if (bsRow.get(board[i][j] - 1) || bsColumn.get(board[j][i] - 1))
    return false;
    else {
    bsRow.set(board[i][j] - 1);
    bsColumn.set(board[j][i] - 1);
    }
    }
    }
    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
      //Vérifie les quandrans (3x3)
    for (int rowOffset = 0; rowOffset < 9; rowOffset += 3) {
    for (int columnOffset = 0; columnOffset < 9; columnOffset += 3) {
    BitSet threeByThree = new BitSet(9);
    for (int i = rowOffset; i < rowOffset + 3; i++) {
    for (int j = columnOffset; j < columnOffset + 3; j++) {
    if (board[i][j] == 0) continue;
    if (threeByThree.get(board[i][j] - 1))
    return false;
    else
    threeByThree.set(board[i][j] - 1);
    }
    }  
    }
    }
    return true;
    }
    MES SOURCES :

    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
    /*****************************************************************************/
    /* Nom du programme: Sudoku                                                  */
    /* Fichier : tp4.java                                                     */
    /* Description :                                                             */
    /* Auteur : cours java                                                       */
    /* Date :                                                                    */
    /* Autres / Execution :                                                      */
    /*****************************************************************************/
     
    public class tp4 {
     
     
      	public static void main(String[] args) {
     
    		int[][] tab1 = { { 0,3,9,1,0,0,0,6,4 },        // Tableau debutant
                             { 0,6,0,7,4,0,0,9,5 },
                             { 7,5,0,0,0,3,2,8,0 },
                             { 6,0,0,2,0,0,0,1,0 },
                             { 0,1,5,0,6,9,0,0,0 },
                             { 0,2,8,4,0,7,0,0,0 },
                             { 5,7,0,0,2,0,0,3,0 },
                             { 0,4,0,0,0,0,0,0,0 },
                             { 0,8,1,5,0,0,0,4,0 } };
     
    		int[][] tab2 = { { 0,0,0,0,0,0,0,0,0 },        // tableau intermediaire
                             { 0,0,0,0,0,0,0,0,0 },
                             { 0,0,0,0,0,0,0,0,0 },
                             { 0,0,0,0,0,0,0,0,0 },
                             { 0,0,0,0,0,0,0,0,0 },
                             { 0,0,0,0,0,0,0,0,0 },
                             { 0,0,0,0,0,0,0,0,0 },
                             { 0,0,0,0,0,0,0,0,0 },
                             { 0,0,0,0,0,0,0,0,0 } };
     
    		int[][] tab3 = { { 0,0,0,0,0,0,0,0,0 },        // Tableau debutant
                             { 0,0,0,0,0,0,0,0,0 },
                             { 0,0,0,0,0,0,0,0,0 },
                             { 0,0,0,0,0,0,0,0,0 },
                             { 0,0,0,0,0,0,0,0,0 },
                             { 0,0,0,0,0,0,0,0,0 },
                             { 0,0,0,0,0,0,0,0,0 },
                             { 0,0,0,0,0,0,0,0,0 },
                             { 0,0,0,0,0,0,0,0,0 } };
     
    		Sudoku9x9 jeu1 = new Sudoku9x9("Joueur1",9,10,1);	// Creation de l'objet jeu1 de la classe Sudoku
     
    		// Test les methodes - setGrille et getGrille
    		jeu1.setGrille(tab1);
    		tab1 = jeu1.getGrille();
    		System.out.println("-- Grille de SUdoku originalle --");
    		for (int i=0; i<jeu1.n; i++) {
    			System.out.print("\t");
    			for (int j=0; j<jeu1.n; j++) {
    				System.out.print(tab1[i][j] + " ");
    			}
    			System.out.println();
    		}
     
            // Test les methodes - getComplexite
            jeu1.setComplexite(1);
    		System.out.println();
    		System.out.println("-- Niveau de difficulte --");
    		System.out.println("\t" + jeu1.getComplexite());
    		System.out.println();
     
    		System.out.println();
     
    		// Test les methodes - setTableaufinal et getTableaufinal
    		jeu1.setTableaufinal(tab3);
    		tab1 = jeu1.getTableaufinal();
    		System.out.println("-- Retourne le tableau --");
    		for (int i=0; i<jeu1.n; i++) {
    			System.out.print("\t");
    			for (int j=0; j<jeu1.n; j++) {
    				System.out.print(tab1[i][j] + " ");
    			}
    			System.out.println();
    		}
    		System.out.println();
     
    		// Test les methodes - setGrille (unedonnee)
    		jeu1.setGrille(1, 1, 0);
    		tab1 = jeu1.getGrille();
    		System.out.println("-- Retourne la grille (unedonnee) --");
    		for (int i=0; i<jeu1.n; i++) {
    			System.out.print("\t");
    			for (int j=0; j<jeu1.n; j++) {
    				System.out.print(tab1[i][j] + " ");
    			}
    			System.out.println();
    		}
    		System.out.println();
     
    		// Test les methodes - setN et getN
    		jeu1.setN(9);
    		System.out.println("-- Retourne la dimension --");
    		System.out.println("\t" + jeu1.getN());
    		System.out.println();
     
    		// Test les methodes - setPlacements et getPlacements
    		jeu1.setPlacements(4);
    		System.out.println("-- Definit les placements --");
    		System.out.println("\t" + jeu1.getPlacements());
    		System.out.println();
     
     
    	}
    }

    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
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    /*****************************************************************************/
    /* Nom du programme: Sudoku                                                  */
    /* Fichier : Sudoku9x9.java                                                     */
    /* Description :                                                             */
    /* Auteur : cours java                                                       */
    /* Date :                                                                    */
    /* Autres / Execution :                                                      */
    /*****************************************************************************/
    import java.util.BitSet;
     
    /*
     *	classe  Sudoku
     */
    public class Sudoku9x9
    {
     
    	int grille[][];
    	int n;
    	int placements = 0;
    	int complexite = 0;
    	int[][] tableaufinal;
    	String nom;
     
    	/* Titre : Constructeur de Sudoku
    	 * Description : Initialise les valeurs de lagrille, lacomplexite et lesplacements a zero.
    	 * Entrees : Les attributs de la classe Sudoku
    	 * 				- n
    	 * 				- lagrille (par reference)
    	 * Sorties : Aucune
    	 * Resultats : Aucun
    	 * Hypohh�ses : Aucune
    	 */
     
    	public Sudoku9x9 (String e, int n, int placements, int complexite) {
     
    		this.n = n;
     
    		grille = new int[n][n];
     
    		// La fonction initialisation permet d'initialiser les attributs suivants :
    		// grille, placements et complexite
    		initialisation ();
    	}
     
    	/* Titre : Initialisation
    	 * Description : Initialise les valeurs de grille, complexite et placements � z�ro.
     
    	 */
    	public void initialisation () {
     
    		for (int i=0; i<n; i++) {
    			for (int j=0; j<n; j++) {
    				grille[i][j] = 0;
    			}
    		}
    		complexite = 0;
    		placements = 0;
    	}
     
    	// Retourne le niveau de complexite
    	public int getComplexite() {
     
    		return complexite;
     
    	}
     
    	// Retourne la grille
    	public int[][] getGrille() {
     
    		return grille;
     
    	}
     
            public void setComplexite(int complexite) {
     
    	this.complexite = complexite;
     
    	}
    	// Definit une unedonnee a la ligne i et colonne j de la grille
    	public void setGrille(int i, int j, int unedonnee) {
     
    		this.grille[i][j] = unedonnee;
     
    	}
     
    	// Retourne la dimension de la grille
    	public int getN () {
     
    		return n;
     
    	}
     
    	// Definit la dimension de la grille
    	public void setN(int n) {
     
    		this.n = n;
     
    	}
     
    	// Retourne la valeur lesplacements
    	public int getPlacements() {
     
    		return placements;
     
    	}
     
    	// Definit la valeur lesplacements
    	public void setPlacements(int placements) {
     
    		this.placements = placements;
     
    	}
     
    	// Definit le tableau final
    	public void setTableaufinal(int[][] tableaufinal) {
     
    		this.tableaufinal = tableaufinal;
     
    	}
     
    	// Definit la grille
    	public void setGrille(int[][] grille) {
     
    		this.grille = grille;
     
    	}
     
    	// Retourne le tableau final
    	public int[][] getTableaufinal() {
     
    		return tableaufinal;
     
    	}
     
        public boolean validate() {
            // un tableau : int[][] tableaufinal = new int[9][9]();
            // initialisation et actions sur le Sudoku
     
            //Vérifie les lignes et les colonnes 
            for (int i = 0; i < tableaufinal.length; i++) {
                BitSet bsRow = new BitSet(9);
                BitSet bsColumn = new BitSet(9);
                for (int j = 0; j < tableaufinal[i].length; j++) {
                    if (tableaufinal[i][j] == 0 || tableaufinal[j][i] == 0) {
                        continue;
                    }
                    if (bsRow.get(tableaufinal[i][j] - 1) || bsColumn.get(tableaufinal[j][i] - 1)) {
                        return false;
                    } else {
                        bsRow.set(tableaufinal[i][j] - 1);
                        bsColumn.set(tableaufinal[j][i] - 1);
                    }
                }
            }
     
            //Vérifie les quandrans (3x3)
            for (int rowOffset = 0; rowOffset < 9; rowOffset += 3) {
                for (int columnOffset = 0; columnOffset < 9; columnOffset += 3) {
                    BitSet threeByThree = new BitSet(9);
                    for (int i = rowOffset; i < rowOffset + 3; i++) {
                        for (int j = columnOffset; j < columnOffset + 3; j++) {
                            if (tableaufinal[i][j] == 0) {
                                continue;
                            }
                            if (threeByThree.get(tableaufinal[i][j] - 1)) {
                                return false;
                            } else {
                                threeByThree.set(tableaufinal[i][j] - 1);
                            }
                        }
                    }
                }
            }
            return true;
        }
     
    }

    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
    import java.util.List;
     
    public abstract class Sudoku {
     
        protected int[][] tableaufinal;
        private int complexite = 0; // Variable pour enregistrer le niveau de difficulte 1 à 3
        private int placement = 0; //nombre de chiffre restant à placer dans la grille
        private List<Placement> placements;
     
        public Sudoku(int[][] tableaufinal) {
            this.tableaufinal = tableaufinal;
        }
     
        public Placement getDernierPlacement() {
            Placement retVal = null;
            if (placements != null) {
                retVal = placements.get(placements.size() - 1);
            }
            return retVal;
        }
        public abstract void fairePlacement(Placement placement);
     
        public abstract void enleverPlacement(Placement placement);
     
        public void imprimerGrilleOriginale() {
     
    //        System.out.println("imprime");
        }
     
        public void imprimerComplexite() {
            System.out.println("Degre de complexite : " + complexite);
        }
     
        public abstract boolean validate();
     
        public int getcomplexite() {
     
            return this.complexite;
        }
     
        public void setComplexite(int complexite) {
            this.complexite = complexite;
        }
    }

    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
    public class Placement {
        private int value = 0;
        private Case uneCase;
     
        public Placement(int x, int y, int value) {
            this.value = value;
            this.uneCase = new Case(x, y);
        }
     
        public Case getCase() {
            return this.uneCase;
        }
     
        public int getValue() {
            return this.value;
        }
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Case {
        private int x;
        private int y;
     
        public Case(int x, int y) {
            this.x = x;
            this.y = y;
        }
    }

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Si il t'es possible de mettre dans des balises code, le code du TP et dans la balise quote les instructions du TP. Cela aiderai beaucoup à la lisibilité !

    Pour ma part, l’énoncé me semble clair. Peut-être associé une question précise à ton problème ? Quel est la partie que tu n'arrive pas à faire ou ne comprends pas ?

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

Discussions similaires

  1. Besoin d'aide pour passage d'un algo au langage JAVA
    Par Spinoza23 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 16/02/2007, 15h33
  2. Réponses: 21
    Dernier message: 10/04/2006, 14h29
  3. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

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