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 :

Afficher les cases autour d'une coordonnées


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2020
    Messages : 39
    Points : 13
    Points
    13
    Par défaut Afficher les cases autour d'une coordonnées
    Bonjour à tous et à toutes !
    J'ai donc une question pour vous que je n'arrive pas à résoudre mais je pense être à deux doigts de trouver, je m'explique, je dois faire une fonction qui, pour un tableau 2D ,si la coordonnée i,j n'a aucune cases adjacentes qui sont égales à "*" ( donc si [i][j] == 0)on révèle toutes les cases adjacentes qui sont égales à 0(un démineur en gros quand on affiche toutes les cases autour de celles qu'on a sélectionnée sauf les bombes)
    voici mon code (oui y'a beaucoup de if je sais que c'est perfectible )
    PS:la fonction "caseCorrecte" vérifie si les coordonnées i,j sont des cases valables du tableau(si elles appartiennent au tableau )

    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
     
    if (Tadj[i][j]==0) {						
    			if (caseCorrecte(i-1,j-1)==true){
    				T[i-1][j-1]=1;						
    			}
    			if (caseCorrecte(i-1,j)==true){
    				T[i-1][j]=1;
    			}
    			if (caseCorrecte(i-1,j+1)==true){
    				T[i-1][j+1]=1;
    			}
    			if (caseCorrecte(i,j-1)==true){
    				T[i][j-1]=1;
    			}
    			if (caseCorrecte(i,j+1)==true){
    				T[i][j+1]=1;
    			}
    			if (caseCorrecte(i+1,j-1)==true){
    				T[i+1][j-1]=1;
    			}
    			if (caseCorrecte(i+1,j)==true){
    				T[i+1][j]=1;
    			}
    			if (caseCorrecte(i+1,j+1)==true){
    				T[i+1][j+1]=1;
    			}	
     
    		}

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    janvier 2009
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2009
    Messages : 181
    Points : 307
    Points
    307
    Par défaut
    Oui et?
    A part des questions de qualité de code, je ne vois pas quoi critiquer?
    je ne vois même pas où est ton problème.

    Par exemple, à la place de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (caseCorrecte(i-1,j-1)==true)
    Ecrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (caseCorrecte(i-1,j-1))
    je suppose que caseCorrecte envoie un booléen...

    Ensuite, on peut un peu optimiser.

    Genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if (Tadj[i][j]==0) {
     
        for(int ik = i - 1; ik < i + 2; ik++){
     
            for(jk = j - 1; jk < j + 2; jk++){
     
               if((i != ik) && (j != jk) &&  caseCorrecte(ik,jk){
                   T[ik][jk]=1;
               }
           }
        }
    }
    On peut évidement toujours faire mieux. Ce ne sont que des pistes.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2020
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    Merci pour votre réponse ! En faites c'est que le code ne fonctionne pas dans certain cas... Et je ne vois pas où est le soucis

  4. #4
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    juillet 2006
    Messages
    1 233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : juillet 2006
    Messages : 1 233
    Points : 1 805
    Points
    1 805
    Par défaut
    ton problème est un grand classique: "éclabousser" les 8 cases autour d'une cellule (on trouve ça par exemple dans des réalisations de jeu de la vie).

    d'abord on peut truquer un peu le tableau: soit en en faisant une matrice torique (mais ça change le jeu) soit en mettant tout autour une "couche de gras" c'est à dire que la première et la dernière ligne, la première et la dernière colonne sont constituées de cellules "mortes" qui ne sont pas affichées et dont le contenu (bidon comme -1) peut facilement être testé sans se poser de question.


    Ensuite à chaque coup on peut générer facilement un tableau de 8 paires qui, en étant parcouru, donne les coordonnées des 8 cases adjacentes.

    tout ça évite d'écrire des boucles fastidieuses.
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (les exercices simplifiés liés à mon bouquin sur Java : http://scrountch.info/java/exercices.html )

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/03/2007, 14h24
  2. Afficher les colonnes lors d'une extraction oracle
    Par griese dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 08/12/2006, 16h20
  3. [JTABLE] afficher les retours chariots dans une cellule
    Par d_token dans le forum Composants
    Réponses: 3
    Dernier message: 11/09/2006, 13h03
  4. Réponses: 3
    Dernier message: 04/09/2006, 00h34
  5. [C# 2.0] Afficher les premières lignes d'une TextBox.
    Par Pierre8r dans le forum Windows Forms
    Réponses: 3
    Dernier message: 02/06/2006, 19h25

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