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 :

programme sudoku en java


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 27
    Par défaut programme sudoku en java
    Bonjour tout le monde,
    Je suis un debuatant en programmation java je suis entrain de faire un programme sudoku, mais je suis arrive dans un ou je ne peux pas continuer je demande votre s'il vouplait. Voici l'enonce:

    Problématique

    Vous poursuivez le mandat qui vous a été confié par la directrice de l’école Saint Pruneau, soit la conception d’un jeu de Sudoku. Dans ce mandat particulier, vous aurez à concevoir les classes associées au jeu de Sudoku et les méthodes qui s’y réfèrent, permettant d’accéder aux données de la grille, la manipulation de la grille et la validation d’une solution. Le fichier/classe tp2.java permettant de démarrer le logiciel devra se nommer tp4.java.

    Dans le cadre de ce travail pratique, vous aurez en prendre un certain nombre de décision dans la conception des classes, soit : Quelles méthodes doivent être abstraite ou non? À quel niveau doit se situer l’implémentation finale du code? Quel type de polymorphisme doit être utilisé? Veuillez utiliser les commentaires dans le code, pour justifier vos choix de conception pour chaque méthode créée !
    1.Créer des classes

    Le programme devra être développé autour de plusieurs classes soit :
    1.tn4.java permettant de démarrer le programme. Cette classe aura une méthode main qui devra faire comme actions :
    1.Créer une instance de la classe Sudoku9x9;
    2.Imprimer la grille de Sudoku original;
    3.Imprimer le degré de difficulté de la grille;
    4.Effectuer 10 placements;
    5.Imprimer la grille de Sudoku suite aux placements;
    6.Annuler 2 placements;
    7.Imprimer la grille de Sudoku suite à l’annulation;
    8.Valider la solution et imprimer le résultat de la validation.
    2.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 :
    1.Une matrice de nombre entier (int[][]) représentant la grille de Sudoku
    2.Une liste d’action de placement (Une ArrayList de classe Placement (voir plus bas))
    3.Le degré de complexité de la grille (int)
    4.L’attribut placement (int) indiquant le nombre de chiffre restant à placer dans la grille

    Elle aura comme méthodes abstraites ou non :
    1.Initialiser une grille
    2.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!
    3.Tester la validité de la solution (voir code en annexe)
    4.Faire un placement (voir plus bas au point 5)
    5.Annuler un placement (voir plus bas au point 5)
    6.Méthodes get et set pour accéder aux attributs de classes (attention à la visibilité des méthodes, c.a.d. public, private, protected).
    7.Imprimer la grille
    1.Sudoku9x9.java, une sous-classe de Sudoku.java qui implémente les méthodes spécifiques à un Sudoku9x9, soit :
    1.Les sous-implémentations des méthodes abstraites de la classe Sudoku.java
    2.Toutes autres méthodes nécessaires pour effectuer le mandat
    2.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.
    1.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 tn4.java) :
    1.Créer une instance de la classe Sudoku9x9;
    2.Imprimer la grille de Sudoku original;
    3.Imprimer le degré de difficulté de la grille;
    4.Effectuer 10 placements;
    5.Imprimer la grille de Sudoku suite aux placements;
    6.Annuler 2 placements;
    7.Imprimer la grille de Sudoku suite à l’annulation;
    8.Valider la solution et imprimer le résultat de la validation.
    1.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).

    1.Code de validation de la grille Sudoku

    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
    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);
     }
     }
     }
     
      //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;
     }
    Merci de corriger pour moi.

    Au plaisir de recevoir votre solution.
    Merci d'avance a tout un chacun

    jsylvestre.

  2. #2
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 27
    Par défaut Voila mes codes
    voici les codes de mon programme:

    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
    package tp4;
     
    public class tn4 {
     
    	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
     
    package tp4;
    import java.util.BitSet;
     
    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
    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
     
    package sudoku;
    import java.util.List;
    public abstract class sudoku {
     
    	public abstract class Sudoku {
     
    	    protected int[][] tableaufinal;
    	    private int complexite = 0; // Variable pour enregistrer le niveau de difficulte 1 à 3
    	    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;
    	    }
    	}
     
     
     
    	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;
    	    }
    	}
     
     
     
    	public class Case {
    	    private int x;
    	    private int y;
     
    	    public Case(int x, int y) {
    	        this.x = x;
    	        this.y = y;
    	    }
    	}
     
     
    }


    Merci a vous tous.
    j'attends votre reponse.

    jsylvestre

  3. #3
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il faudrait que tu nous expliques exactement où tu en es et qu'est-ce qui te bloque exactement.

    Sinon quelques remarques sur le code posté :


    1. Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      public abstract class sudoku {
       
      	public abstract class Sudoku {
      Erreur de copier/coller ? Sinon il y a un problème : pourquoi cette duplication ?
    2. Le but de l'exercice est de mettre toute la logique dans la classe abstraite Sudoku et de faire que Sudoku9x9 étende Sudoku pour faire la version spécifique de 9 fois 9. Il ne devrait pas y avoir tant de code dans Sudoku9x9 et surtout pas du code déjà présent dans Sudoku.
    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.

  4. #4
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 27
    Par défaut
    Citation Envoyé par jsylvestre Voir le message
    voici les codes de mon programme:

    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
    package tp4;
     
    public class tn4 {
     
    	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
     
    package tp4;
    import java.util.BitSet;
     
    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
    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
     
    package sudoku;
    import java.util.List;
    public abstract class sudoku {
     
    	public abstract class Sudoku {
     
    	    protected int[][] tableaufinal;
    	    private int complexite = 0; // Variable pour enregistrer le niveau de difficulte 1 à 3
    	    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;
    	    }
    	}
     
     
     
    	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;
    	    }
    	}
     
     
     
    	public class Case {
    	    private int x;
    	    private int y;
     
    	    public Case(int x, int y) {
    	        this.x = x;
    	        this.y = y;
    	    }
    	}
     
     
    }


    Merci a vous tous.
    j'attends votre reponse.

    jsylvestre

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 27
    Par défaut programme sudoku java
    Bonjour,
    on m'a demande de faire 10 placements mais je vois pas comment le faire.
    Ainsi on m'a demande d'utiliser un arraylist pour gerer les matrices

    Merci a vous.
    jsylvestre.

  6. #6
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Salut,
    Citation Envoyé par jsylvestre Voir le message
    on m'a demande de faire 10 placements mais je vois pas comment le faire.
    Ainsi on m'a demande d'utiliser un arraylist pour gerer les matrices
    On te demande juste de faire un petit programme de test pour Suduko9x9 : donc créer une grille de sudoku, avec des cases vides, comme pour une grille à jouer qu'on trouve dans le journal, et simuler ce que ferait un joueur qui ferait 10 placement de chiffres, dans des cases libres, comme si le programme jouait sérieusement au sudoku.
    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.

  7. #7
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 27
    Par défaut sudoku en java
    Merci joel.drigo.Mais je ne sais pas comment faire ca avec arraylist , est-ce que vous pouvez me donner un exemple svp.

Discussions similaires

  1. Programmation jeu Sudoku en Java
    Par Janica dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 17/12/2014, 17h59
  2. [Débutant] Programmer le jeu Sudoku en Java
    Par whally dans le forum Graphisme
    Réponses: 5
    Dernier message: 04/03/2011, 09h53
  3. programmation du Sudoku en java
    Par lavoiture dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 09/01/2009, 21h10
  4. Réponses: 2
    Dernier message: 08/09/2005, 12h18
  5. [JDBC] Programmation autre que Java
    Par Vow dans le forum JDBC
    Réponses: 2
    Dernier message: 23/06/2004, 11h22

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