Koordinatensystem

dariusberlin

Mitglied
Hallo, dieses nichtgrafische Koordinatensystem soll soviele Werte haben, wie es int gibt. Leider kann ich bisher in jede Richtung nur bis 5 gehen außer im 1. Quadranten. Kann mir jemand sagen woran der Fehler liegt, bzw. was ich tun muß?
Java:
package langton;

import java.util.Arrays;


public class Board {
  
  
  int Matrix1 [][]= { {0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0},{0,0,0,0,0} };
  int Matrix2 [][]= { {0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0},{0,0,0,0,0} };  
  int Matrix3 [][]= { {0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0},{0,0,0,0,0} };
  int Matrix4 [][]= { {0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0},{0,0,0,0,0} };
public int getstate (int x, int y){
int result=0;

if (x>=0 && y>=0){

  if (x> Matrix1[0].length){int Matrix1[][]=Arrays.copyOf(  Matrix1, x+5);     //1. Quadrant

  result=  Matrix1[y][x];

  }

  
}else
  
if (x<0 && y>=0){                   //2. Quadrant
  result= Matrix2[-1*x][y];
}
if (x<= 0 && y <0){                   //3. Quadrant
  result= Matrix3[-1*x][-1*y];
}
if (x>0 && y<0){                   //4. Quadrant
  result=Matrix4[x][-1*y];
}
return result;
}


public void setstate(int x,int y, int state1){
  if (x>=0 && y>=0){                   //Im 1. Quadrant Werte setzen
   Matrix1[y][x]=state1;
  }
  if (x<0 && y>=0){                   //Im 2. Quadrant Werte setzen
  
   Matrix2[-1*x][y]=state1;
  }
  if (x<=0 && y<0){                   //Im 3. Quadrant Werte setzen
    Matrix3[-1*x][-1*y]=state1;
  }
  if (x>0 && y<0){                   //Im 4. Quadrant Werte setzen
   Matrix4[x][-1*y]=state1;
  
  }
}}
 
Zuletzt bearbeitet von einem Moderator:

Viktim

Bekanntes Mitglied
Wenn ich dich richtig verstanden hab, willst du ein Koordinaten system haben, das so groß ist, wie es mit einem int array geht, und jede Stelle mit einer "0" füllen, richtig?
wenn ja würde ich das so machen:

Java:
int[][] koordinatensystem = new int[Integer.MAX_VALUE][Integer.MAX_VALUE];

for(int i = 0; i < koordinatensystem.length; i++) {
  for(int k = 0; k < koordinatensystem[0].length; k++) {
    koordinatensystem[i][k] = "0";
  }
}
 

dariusberlin

Mitglied
Das geht leider nicht, weil dadurch die Rechenzeit zu lang wird. Ich habe es ausprobiert. Es ist folgendermaßen:
Ich möchte die langton Ameise implementieren und jetzt bin ich erstmal dabei das "Spielfeld" auf dem die Ameise sich bewegt,
nichtgrafisch zu implementieren. Die Felder sollen 0 zurückliefern es sei denn, man weist ihnen einen anderen int Wert zu.
 

Viktim

Bekanntes Mitglied
mal eine Frage, wie willst du so ein riesiges Spielfeld ausgeben o_O
(Wenn dir das schreiben von den nullen in ein Array schon zu Lange dauert, dann viel Spaß mit den Ausgaben :D)
 

dariusberlin

Mitglied
Man braucht ja nicht immer das komplette Koordinatensystem, es geht ja grundsätzlich immer nur um die Stelle, wo sich die Ameise später befinden soll. Ich dachte daran ein Array zu erzeugen und dann, wenn die werde überschritten werden, ein neues zu erzeugen.
 

Ähnliche Java Themen


Oben