Hallo,
ich habe das Problem, dass bei meinem Array in jedem Feld die gleichen Werte stecken. Habe schon danach gesucht, aber mehr als eine Vermutung, dass es an einem "static" liegt, habe ich nicht dazu gefunden.
Hier die Klasse, von der ein Array erzeugt werden soll:
Und hier die Methode (aus der Klasse Playground), mit der ich die Werte in das Array speichern will:
Und das ist nun das Array, in dem alle Werte in jedem Feld gleich sind:
Ich dachte schon, dass es vielleicht an dem aktField liegt, aber mit
bekomme ich eine NullPointerException.
Schonmal vielen Dank für eure Hilfe.
MfG
ich habe das Problem, dass bei meinem Array in jedem Feld die gleichen Werte stecken. Habe schon danach gesucht, aber mehr als eine Vermutung, dass es an einem "static" liegt, habe ich nicht dazu gefunden.
Hier die Klasse, von der ein Array erzeugt werden soll:
Code:
public class Field
{
boolean blocked=false; //nicht begehbare felder
boolean barred=false; //versperrte felder
int xLow;
int xHigh;
int yLow;
int yHigh;
}
Und hier die Methode (aus der Klasse Playground), mit der ich die Werte in das Array speichern will:
Code:
public static Field[][] generateGrid()
{
int klength=20;
Random rnd=new Random();
Field[][] pgPrivate=new Field[13][11];
Field aktField=new Field();
for(int i=0;i<=12;i++)
for(int j=0;j<=10;j++)
{
aktField.xLow=i*klength;
aktField.xHigh=(i+1)*klength;
aktField.yLow=i*klength;
aktField.yHigh=(i+1)*klength;
if((i%2==1)&&(j%2==1))
{
aktField.blocked=true;
}
else
{
//Entscheidet, ob ein Feld verbarrikadiert wird
int block = Math.abs(rnd.nextInt() % 10);
if (block > 3)
if(((i!=0)&&(j!=0))&&(i!=0)&&(j!=1)&&(i!=1)&&(j!=0))
aktField.barred=true;
}
pgPrivate[i][j]=aktField;
}
return pgPrivate;
}
Und das ist nun das Array, in dem alle Werte in jedem Feld gleich sind:
Code:
Field[][] p=Playground.generateGrid();
Ich dachte schon, dass es vielleicht an dem aktField liegt, aber mit
Code:
public static Field[][] generateGrid()
{
int klength=20;
Random rnd=new Random();
Field[][] pgPrivate=new Field[13][11];
for(int i=0;i<=12;i++)
for(int j=0;j<=10;j++)
{
pgPrivate[i][j].xLow=i*klength;
pgPrivate[i][j].xHigh=(i+1)*klength;
pgPrivate[i][j].yLow=i*klength;
pgPrivate[i][j].yHigh=(i+1)*klength;
if((i%2==1)&&(j%2==1))
{
pgPrivate[i][j].blocked=true;
}
else
{
//Entscheidet, ob ein Feld verbarrikadiert wird
int block = Math.abs(rnd.nextInt() % 10);
//In 60% der Fälle wird Feld verbarrikadiert
if (block > 3)
if(((i!=0)&&(j!=0))&&(i!=0)&&(j!=1)&&(i!=1)&&(j!=0))
pgPrivate[i][j].barred=true;
}
}
return pgPrivate;
}
Schonmal vielen Dank für eure Hilfe.
MfG