Hallo ihr Lieben,
ich bin kompletter Java Anfänger, brauche es allerdings jetzt für die Uni.
Wir haben ein Projekt, bei dem ich über die GUI einen Helikopter von Punkt A nach Punkt B fliegen lassen soll. Dies soll Kästchenweise über Pixel laufen.
Also muss ich den kürzesten Weg approximieren, sodass der Heli quasi im Zickzack fliegt.
Alles etwas kompliziert. Mein Problem ist nun, dass sich meine Liste, in der ich die Pixelkoordinaten speichere, immer wieder überschreibt.
Sobald die While-Schleife das zweite Mal aufgerufen wird, wird zwar korrekt ein Array eingefügt, allerdings verändert sich der Eintrag vorher in der Liste auch. Wie kann ich das verhindern? Danke schon mal für jegliche Hilfe!
ArrayList<int[]> pixelliste = new ArrayList<int[]>();
int[] pixel = new int[2];
int[] pixel1 = new int[2];
//x_start_akt sind die Pixelkoordinaten, die sich ständig aktualisieren.
while (x_start_akt != x_ende && y_start_akt != y_ende) {
if (x_start_akt != x_ende && y_start_akt != y_ende) {
pixel[0] = x_start_akt - 20;
pixel[1] = y_start_akt;
x_start_akt = x_start_akt - 20;
pixelliste.add(pixel);
}
if (x_start_akt != x_ende && y_start_akt != y_ende) {
pixel1[0] = x_start_akt;
pixel1[1] = y_start_akt - 20;
y_start_akt = y_start_akt - 20;
pixelliste.add(pixel1);
}
ich bin kompletter Java Anfänger, brauche es allerdings jetzt für die Uni.
Wir haben ein Projekt, bei dem ich über die GUI einen Helikopter von Punkt A nach Punkt B fliegen lassen soll. Dies soll Kästchenweise über Pixel laufen.
Also muss ich den kürzesten Weg approximieren, sodass der Heli quasi im Zickzack fliegt.
Alles etwas kompliziert. Mein Problem ist nun, dass sich meine Liste, in der ich die Pixelkoordinaten speichere, immer wieder überschreibt.
Sobald die While-Schleife das zweite Mal aufgerufen wird, wird zwar korrekt ein Array eingefügt, allerdings verändert sich der Eintrag vorher in der Liste auch. Wie kann ich das verhindern? Danke schon mal für jegliche Hilfe!
ArrayList<int[]> pixelliste = new ArrayList<int[]>();
int[] pixel = new int[2];
int[] pixel1 = new int[2];
//x_start_akt sind die Pixelkoordinaten, die sich ständig aktualisieren.
while (x_start_akt != x_ende && y_start_akt != y_ende) {
if (x_start_akt != x_ende && y_start_akt != y_ende) {
pixel[0] = x_start_akt - 20;
pixel[1] = y_start_akt;
x_start_akt = x_start_akt - 20;
pixelliste.add(pixel);
}
if (x_start_akt != x_ende && y_start_akt != y_ende) {
pixel1[0] = x_start_akt;
pixel1[1] = y_start_akt - 20;
y_start_akt = y_start_akt - 20;
pixelliste.add(pixel1);
}