2011-01-07 2 views
1

Je travaille sur cette chose de jeu de vie de bactéries que je dois faire.meilleure façon de vérifier les indices autour d'un certain index dans un tableau 2d

Fondamentalement, j'ai un tableau de chaînes 2d disons 20 par 20.

Quelle serait la meilleure façon de vérifier les 8 points autour d'un certain indice. Chaque indice est supposé représenter une bactérie. Pour chaque bactérie (indice) je dois vérifier si l'un des 8 points autour de cet index contient une autre bactérie, si l'index contient une bactérie, il est représenté simplement par un "*", asterik.

Quelle serait la meilleure façon de s'y prendre pour vérifier les 8 points autour de chaque index, car basé sur ce qui est dans les indices autour d'un certain indice, je dois apporter certaines modifications, etc.

La seule idée que j'ai venir avec est d'avoir un tas de déclarations if pour vérifier les 8 points, je me demandais s'il y avait une meilleure façon de le faire

ex: ligne 1 - www, ligne 2 = wOw, ligne 3 - www, Si je suis à l'index O, quelle serait la meilleure façon de vérifier tous les points d'index autour d'elle pour une certaine chaîne.

Désolé, je ne suis pas très bon pour expliquer mes problèmes, mauvais anglais: o.

merci pour toute l'aide.

Répondre

1

si vous avez quelque chose comme ça

char[][] table = new char[20][20] 

for(int i = 0; i < 20; i++) { 
    for(int j = 0; j < 20; j++) { 
     int surroundingBacteria = 0; 
     for(int x = max(i-1,0); x < min(20,i+1); x++) { 
      for(int y = max(i-1,0); y < min(20,i+1); y++) { 
       if(table[x][y] == '*') surroundingBacteria++; 
      } 
     } 
     switch(surroundingBacteria) { 
      // put your case logic here 
     } 
    } 
} 
0

Voici comment je l'ai accompli dans le passé:

for(int x = -1; x<=1; x++){ 
    if (i+x < xLength && i+x >= 0){ 
     for(int y = -1; y<=1; y++){ 
      if(j+y < yLength && j+y >= 0){ 
       //logic goes here 
      } 
     } 
    } 
} 
Questions connexes