Game of Life.. 2-array search in 2-array

Status
Niet open voor verdere reacties.

Maurice TU

Nieuwe gebruiker
Lid geworden
2 okt 2010
Berichten
3
Beste,

Op school krijg ik sinds 5 weken programmeren in Java.. als huiswerkopdracht moeten wij deze week een Game-of-Life maken. Voor diegene die niet weten wat dit is.. een matrix met dode en levende 'cellen' die aan de hand van een aantal regels dood gaan of dood blijven en levend worden of levend blijven. Nu is vrijwel de hele opdracht gelukt.. alleen krijg ik het niet voor elkaar een 2-array search in mijn 2-array 'matrix' te plaatsen.

Ik heb dus als eerst een method waarin ik elk vakje langs ga van de matrix:

void loop() {

for (i=1;i<grid.length-1;i++) {
for (j=1;j<grid.length-1;j++) {
}
}


In de method heb ik een method geplaats die voor elk vakje dat de loop method langsloopt.. alle vakjes daar omheen bekijkt om te controleren hoeveel levende buren deze heeft. Hier ontstaat het probleem! Momenteel heb ik doormiddel van 8 if-regels deze controle laten uitvoeren (beetje overdreven denk ik), dus als volgt:

int buren(){
int number;
number = 0;
if (matrix[i-1][j-1] == true){
number = number + 1;
}
if (matrix[i-1][j] == true){
number = number + 1;
}
if (matrix[i-1][j+1] == true) {
number = number + 1;
} etc,etc,etc,etc



Nu moet het volgens mij anders kunnen en wel door middel van een loop die de eigen rij en de rij erboven en eronder bekijkt met de kolom waarin het vakje zich bevindt en de kolom er links en rechts van. Dus eenzelfde soort regel als in mijn 'loop method'. Ik dacht zoiets als dit:

for (i=i-1;i<i+2;i++) {
for (j=j-1;j<j+2;j++) {
if (grid[j] = true) {
life=life+1;
}
}
}


Helaas werkt dit dus niet! Vandaar van mij de vraag of iemand mij hierbij kan helpen en eventueel in de opzet die ik bedoel dit kan oplossen..? Ik zou hier erg mee geholpen zijn!

Sorry voor de misschien wat kromme uitleg en misschien misplaatste benamingen. Ben hier helemaal nieuw mee!

Alvast bedankt!

Groeten!
 
Laatst bewerkt:
PHP:
    /*
     * het speciale is dat je moet zorgen dat de controle binnen de matrix blijft
     * kijk naar if (i < 0) i = 0 en if (j < 0) j = 0 binnen de lus
     * en de i<size en j<size in de conditional statement van de for lus
     * (size is de maat van de matrix, in dit geval een vierkantsmatrix met zijde size)
     * dus als size gelijk is aan 5 heb je een matrix met 25 posities
     */
    int buren(int x, int y) {
        int life = 0;
        for (int i = x - 1; i < x + 2 && i < size; i++) { // kijk naar de i<size voor een controle op een te grote waarde
            if (i < 0) i = 0; // een controle op een te kleine waarde
            for (int j = y - 1; j < y + 2 && j < size; j++) {
                if (j < 0) j = 0;
                if ((!(j == y && i == x)) && grid[i][j]) { 
                    life++;
                }
            }
        }
        return life;
    }
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan