лучший способ проверить индексы вокруг определенного индекса в 2d массиве - PullRequest
1 голос
/ 07 января 2011

Я работаю над этой игрой с бактериальной жизнью, которую я должен сделать.

По сути, у меня есть двумерный массив, скажем, 20 на 20.

Какой самый лучший способ проверить все 8 точек вокруг определенного индекса. Предполагается, что каждый индекс представляет собой бактерию. Для каждой бактерии (индекса) я должен проверить, есть ли в любой из 8 точек вокруг этого индекса еще одна бактерия, если в индексе есть бактерии, он представлен просто звездочкой "*".

Как лучше всего проверить все 8 точек вокруг каждого индекса, потому что исходя из того, что находится в индексах вокруг определенного индекса, я должен внести определенные изменения и т. Д.

Единственная идея, которая мне пришла в голову, это иметь кучу операторов if, чтобы проверить все 8 мест, мне было интересно, есть ли лучший способ сделать это

например: строка 1 - www, строка 2 = wOw, строка 3 - www,

если я нахожусь в индексе O, какой лучший способ проверить все области индекса вокруг определенной строки.

Извините, я не очень хорошо объясняю свои проблемы, плохой английский: o.

спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 07 января 2011

так у вас что-то вроде этого

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 голосов
/ 07 января 2011

Вот как я достиг этого в прошлом:

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
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...