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 :

Création d'un sudoku


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 20
    Points : 12
    Points
    12
    Par défaut Création d'un sudoku
    Bonjour! Je dois créer un sudoku dans le cadre d'un projet pour mon DUT informatique. J'ai déjà quelques peu avancé mais je suis bloqué. Le professeur nous a donné quelques methodes deja implémentées mais je ne comprend pas pourquoi je n'arrive pas à générer une grille valide (grille préremplie avec des chiffres) quand je clique sur le bouton "nouveau" voici mon code:

    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
     
     
    public boolean remplirAleatoireValide(Random aleatoire, ListIterator<CaseSudoku> iterateur) {
    		boolean res = false;
    		if (iterateur == null)
    			iterateur = lesCases.listIterator(); // par défaut on travail avec
    													// l'ensemble des cases et
    													// l'ordre correspondant
    		if (!iterateur.hasNext())
    			res = true;
    		else {
    			CaseSudoku c = iterateur.next();
    			if (c.fixee())
    				res = this.remplirAleatoireValide(aleatoire, iterateur);
    			else {
    				LinkedList<Integer> lesPossibles = c.getPossibles()
    						.listeAleatoire(aleatoire);
    				while (!lesPossibles.isEmpty()) {
    					c.jouerLaValeur(lesPossibles.removeFirst());
    					res = remplirAleatoireValide(aleatoire, iterateur);
    					if (res)
    						break;
    					c.annulerJoue();
    				}
    			}
    			if (!res)
    				iterateur.previous();
    		}
    		return res;
    	}
     
     
    public int creationDuneGrilleDeJeu(int minVide, int maxVide){
    		grille.vider();
    		grille.remplirAleatoireValide(this.aleatoire, null);
    		getGrille().Export(new PrintWriter(System.out,true),3);
    		grille.initPossibles();
    		ListeCases listeCases = (ListeCases)this.grille.getLesCases().clone();
    		listeCases.setType(TypeListeCases.NonOrdonnee);
    		Collections.shuffle(listeCases);
    		return creationDuneGrilleDeJeuRecursive(minVide,maxVide, 0,listeCases);
    }
     
    public int creationDuneGrilleDeJeuRecursive(int minVide, int maxVide, int actuel, ListeCases listeCases){
    		CaseSudoku c = listeCases.pop();
    		Integer val=c.getValeur();
    		c.annulerJoue();
    		int nbrVide=0;
    		int nbrRemplir = this.nombreDeFaconDeRemplirLaGrille(2);
    		if (nbrRemplir==1){
    			if (actuel+1<maxVide) nbrVide=creationDuneGrilleDeJeuRecursive(minVide, maxVide, actuel+1, listeCases);
    			else nbrVide=actuel+1;
    		}
    		else {
    			c.jouerLaValeur(val);
    			if (actuel<minVide) nbrVide=creationDuneGrilleDeJeuRecursive(minVide, maxVide, actuel, listeCases);
    			else nbrVide=actuel;
    		}
    		listeCases.push(c);
    		return nbrVide;
    	}
     
    public void genererGrilleValide() {
    		// Generer la grille, ne fonctionne pas...
    		jeu.creationDuneGrilleDeJeu(35, 45);		
    }
     
    public void initPossibles() {
    		Point2D dim = getDimension();
    		int n = dim.getY(), m = dim.getX(), i, j;
    		for (i = 0; i < n; i++) {
    			for (j = 0; j < m; j++) {
    				getCase(i, j).initPossible();
    			}
    		}
    }
     
    public void gereEvenement(String nomComposant,int typeEvenement,String valeur,int xSouris,int ySouris) {
    if (nomComposant.equals("Nouveau")) {
    			if(typeEvenement == Constantes.CLICK_BOUTON){
    				controleur.genererGrilleValide();
    			}
    		}
    }

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 38
    Points : 69
    Points
    69
    Par défaut
    Il manque quelques infos pour t'aider là !

    Qu'entends tu par "ne marche pas" : une exception java, ta grille est vide / pas valide, ça ne compile pas ... ? ou rien ne se passe quand tu clique sur ton bouton ?

    Il faut que tu cibles un peu plus ton erreur.

    Avec le bout de code que tu postes, on ne voit pas grand chose d'autant plus que ce sont des méthodes (de différentes classes ?) en vrac.
    Il y a toujours une solution

Discussions similaires

  1. Problème dans la création d'une grille de Sudoku
    Par Aurelienjjj dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/02/2013, 17h40
  2. Création d'un Sudoku
    Par Invité dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/04/2010, 18h08
  3. Création de grilles de sudoku fini
    Par mooglwy dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 19/03/2008, 22h29
  4. Création d'un SUDOKU
    Par Vinzouille dans le forum Windows
    Réponses: 2
    Dernier message: 21/09/2006, 01h56
  5. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 16h04

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