Hallo,
ich bin noch relativ unerfahren in Java und stehe vor folgendem Problem:
Ich will ein Programm für Conways Spiel des Lebens schreiben, dazu muss ich eine Funktion schreiben, die alle Nachbarn eines Index' eines 2dimensionalen Arrays zählt. Ich weiß, dass ich eine unorthodoxe Methode dazu verwendet habe, allerdings wollte ich es so einmal ausprobieren. Der Haken:
Diese Methode greift auf ein Array zu, das global deklariert und durch "Random Generator" mit boolean'schen Werten vollgestopft werden sollte, , allerdings geschieht dies erst in der main-Methode.
Wie kann also die Methode "nachbar" auf dieses erzeugte Array zugreifen? Kann man das Array global, also innerhalb der Klasse deklarieren?
Vielen vielen Dank für alle antworten, ich geh jetzt pennen
ich bin noch relativ unerfahren in Java und stehe vor folgendem Problem:
Ich will ein Programm für Conways Spiel des Lebens schreiben, dazu muss ich eine Funktion schreiben, die alle Nachbarn eines Index' eines 2dimensionalen Arrays zählt. Ich weiß, dass ich eine unorthodoxe Methode dazu verwendet habe, allerdings wollte ich es so einmal ausprobieren. Der Haken:
Diese Methode greift auf ein Array zu, das global deklariert und durch "Random Generator" mit boolean'schen Werten vollgestopft werden sollte, , allerdings geschieht dies erst in der main-Methode.
Wie kann also die Methode "nachbar" auf dieses erzeugte Array zugreifen? Kann man das Array global, also innerhalb der Klasse deklarieren?
Java:
import java.util.Random;
public class Conway
{
public static int nachbar(int x, int y) //nachbarn zählen
{
int anzahl = 0;
switch (x)
{
case 0:
switch (y)
{
case 0: //links oben
if(array[x][y+1]) anzahl++;
if(array[x+1][y]) anzahl++;
if(array[x+1][y+1]) anzahl++;
break;
case 9: //links unten
if(array[x][y-1]) anzahl++;
if(array[x+1][y]) anzahl++;
if(array[x+1][y-1]) anzahl++;
break;
default: //links mitte
if(array[x][y+1]) anzahl++;
if(array[x][y-1]) anzahl++;
if(array[x+1][y+1]) anzahl++;
if(array[x+1][y-1]) anzahl++;
if(array[x+1][y]) anzahl++;
break;
}
break;
case 9:
switch (y)
{
case 0: //rechts oben
if(array[x][y+1]) anzahl++;
if(array[x-1][y]) anzahl++;
if(array[x-1][y+1]) anzahl++;
break;
case 9: //rechts unten
if(array[x][y-1]) anzahl++;
if(array[x-1][y]) anzahl++;
if(array[x-1][y-1]) anzahl++;
break;
default: //rechts mitte
if(array[x-1][y]) anzahl++;
if(array[x-1][y+1]) anzahl++;
if(array[x-1][y-1]) anzahl++;
if(array[x][y-1]) anzahl++;
if(array[x][y+1]) anzahl++;
break;
}
break;
default:
switch (y)
{
case 0: //mitte oben
if(array[x][y+1]) anzahl++;
if(array[x+1][y+1]) anzahl++;
if(array[x+1][y]) anzahl++;
if(array[x-1][y]) anzahl++;
if(array[x-1][y+1]) anzahl++;
break;
case 9: //mitte unten
if(array[x][y-1]) anzahl++;
if(array[x+1][y]) anzahl++;
if(array[x+1][y-1]) anzahl++;
if(array[x-1][y]) anzahl++;
if(array[x-1][y-1]) anzahl++;
break;
default: //mitte mitte
if(array[x][y-1]) anzahl++;
if(array[x][y+1]) anzahl++;
if(array[x+1][y]) anzahl++;
if(array[x+1][y+1]) anzahl++;
if(array[x+1][y-1]) anzahl++;
if(array[x-1][y]) anzahl++;
if(array[x-1][y+1]) anzahl++;
if(array[x-1][y-1]) anzahl++;
break;
}
break;
}
return anzahl;
}
public static void main(String[] args) //main-methode, druckt die muster aus
{
boolean[][] array = new boolean[10][10]; //2dimensionales array (boolean) wird erzeugt, durch random mit werten belegt
Random generator = new Random();
double zufallswert;
for (int i = 0; i<10;i++)
{
for (int j = 0;j<10;j++)
{
zufallswert = generator.nextDouble();
if (zufallswert >=0.5)
array[i][j] = true;
}
}
System.out.println("Dies ist die erste Generation"); //werte vom array werden gedruckt, indem für "true" ein "X"
//und für "false" ein " " angezeigt wird
for(int i = 0;i<10;i++)
{
for(int j = 0;j<10;j++)
{
if (array[i][j])
{
System.out.print("X");
}
else
{
System.out.print(" ");
}
}
System.out.print("\n");
}
System.out.println("\n\nDies ist die zweite Generation");
for(int a = 0; a<10;a++) //wie erster ausdruck, nur wird hier jedes Feld auf nachbarn überprüft
{ //und dementsprechen mit einem "X" oder " " versehen
for(int b = 0; b<10;b++)
{
switch (nachbar(a,b))
{
case 0:
case 1:
System.out.print(" ");
break;
case 2:
if(array[a][b])
{
System.out.print("X");
}
else
{
System.out.print(" ");
}
break;
case 3:
System.out.print("X");
break;
default:
System.out.print(" ");
break;
}
}
System.out.print("\n");
}
System.out.println(nachbar(3,3)); //nur zum Test, die Methode nachbar geht also nicht
}
}
Vielen vielen Dank für alle antworten, ich geh jetzt pennen