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

Java Discussion :

[Conception][Image] Compter les pieces d'un puzzle


Sujet :

Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 89
    Points : 51
    Points
    51
    Par défaut [Conception][Image] Compter les pieces d'un puzzle
    Voila mon but est de compter les pieces d un puzzle a partir d une image. Mon idee etait d incrementer une variable des que je trouve un pixel different de 0 et de mettre tous les pixels autour a 0. J ai mis tous les pixels plus ou moins proches de 0 a 0 au prealable.

    Mon code est le suivant :
    private void deletePixel(int i, int j)
    {
    this.matrice[i][j] = 0;
    if (this.matrice[i - 1][j] != 0)
    deletePixel(i - 1, j);
    if (this.matrice[i + 1][j] != 0)
    deletePixel(i + 1, j);
    if (this.matrice[i][j - 1] != 0)
    deletePixel(i, j - 1);
    if (this.matrice[i][j + 1] != 0)
    deletePixel(i, j + 1);
    }

    et l erreur est la suivante : StackOverflowError

  2. #2
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    bonsoir,
    ta méthode est récursive et il se trouve que tu atteinds la pofondeur maximale de pile par le jeu des appels récursifs lié à la configuration de la pièce de puzzle. Ce qui est étonnant, c'est que tu ne fais pas de contrôle sur la validité des indices i et j vis à vis de la taille de ta matrice, tu aurais aussi bien pu avoir un IndexOutOfBounds si ta pièce rejoignait un des bords.

    Voici une méthode qui utilise un objet de type Stack plutôt que la pile système. Je te laisse rajouter les contrôles d'indice.

    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
    private Stack stack = new Stack();
     
    private void deletePixel(int i, int j)  { 
      stack.push(new Coord(i, j));
     
      while (!stack.empty()) {
        Coord coord = stack.pop();
        i = coord.i;
        j = coord.j;
        matrice[i][j] = 0;
     
        if (matrice[i - 1][j] != 0) {
          stack.push(new Coord(i - 1, j));
        }
        if (matrice[i + 1][j] != 0) {
          stack.push(new Coord(i + 1, j));
        }
        if (matrice[i][j - 1] != 0) {
          stack.push(new Coord(i, j - 1));
        }
        if (matrice[i][j + 1] != 0) {
          stack.push(new Coord(i, j + 1));
        }
    } 
     
    class Coord {
      public int i;
      public int j;
     
      public Coord(int i, int j) {
        this.i = i;
        this.j = j;
      }
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 89
    Points : 51
    Points
    51
    Par défaut
    J avais bien compris que mon erreur etait du a ca. Et je n ai pas verifie i et j car je sais justement q aucune de mes pieces ne touchera le bord. Par contre si tu a un autre moyen de compter les pieces je suis preneur car a part cette technique je ne voies pas grand chose d autre. Apres ca je dois encore tenter de reunir plus ou moins ces pieces.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 89
    Points : 51
    Points
    51
    Par défaut
    J ai l impression que tout le monde seche. C pas grave merci quand meme.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 89
    Points : 51
    Points
    51
    Par défaut
    merci ca fonctionne comme ca. j ai plus k a enlever le bruit et mon compte devrait etre bon. Faut ke je trouve comment enlever le bruit mais bon c deja ca.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. compter les pixels d'une image avec Qt
    Par Franckesh dans le forum Qt
    Réponses: 1
    Dernier message: 09/12/2009, 20h55
  2. Réponses: 5
    Dernier message: 20/07/2009, 17h15
  3. [WD7.5] Compter les pixels d'une Image
    Par mlww dans le forum WinDev
    Réponses: 5
    Dernier message: 05/07/2007, 22h50
  4. [IMAP] distinguer les pieces jointes et les images inlines
    Par firejocker dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 04/11/2005, 13h11
  5. [Graphique] Comment compter les couleurs d'une image ?
    Par yoghisan dans le forum API, COM et SDKs
    Réponses: 27
    Dernier message: 16/02/2005, 18h17

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