Guten Tag zusammen. Für ein Projekt soll ich das Spiel 2048 programmieren. Ich bin ziemlich am Ende und das einzige was mir fehlt ist eine Liste mit Bewegungen. Dafür gibt es eine Klasse, die alte und neue Koordinaten und den Wert enthält. Anhand des Arrays vor der Bewegung und nach der Bewegung soll ich passierten Bewegungen
[ . . 8 . . ]---[ 8 4 16 . 2 ]
[ 8 2 . . 2 ]---[ 8 4 . . 4 ]
[ 4 . 8 . 4 ]---[ . . . . 2 ]
[ 4 2 . . . ]---[ . . . . . ]
[ . 4 . . 2 ]---[ . . . . . ]
Es geht hierbei nur um die Bewegung der Teile nach oben, da ich bereits Methoden habe die Koordinaten für andere Richtungen abändern.
Letztlich sollte für das Beispiel dann diese Bewegungen in einer Liste stehen.Erst alte Koordinaten mit Wert dann neue Koordinate mit Wert : (0/1):8 -> (0/0):8, (0/2):4 -> (0/1):4, (0/3):4 -> (0/1):8, (1/1):2 -> (1/0):2, (1/3):2 -> (1/0):4, (1/4):4 -> (1/1):4, (2/2):8 -> (2/0):16, (4/1):2 -> (4/0):2, (4/2):4 -> (4/1):4, (4/4):2 -> (4/2):2
Mein Ansatz sieht bisher so aus und ich komme einfach nicht weiter...
Vielen Dank für Antworten und Hilfestellungen.
Liebe Grüße
[ . . 8 . . ]---[ 8 4 16 . 2 ]
[ 8 2 . . 2 ]---[ 8 4 . . 4 ]
[ 4 . 8 . 4 ]---[ . . . . 2 ]
[ 4 2 . . . ]---[ . . . . . ]
[ . 4 . . 2 ]---[ . . . . . ]
Es geht hierbei nur um die Bewegung der Teile nach oben, da ich bereits Methoden habe die Koordinaten für andere Richtungen abändern.
Letztlich sollte für das Beispiel dann diese Bewegungen in einer Liste stehen.Erst alte Koordinaten mit Wert dann neue Koordinate mit Wert : (0/1):8 -> (0/0):8, (0/2):4 -> (0/1):4, (0/3):4 -> (0/1):8, (1/1):2 -> (1/0):2, (1/3):2 -> (1/0):4, (1/4):4 -> (1/1):4, (2/2):8 -> (2/0):16, (4/1):2 -> (4/0):2, (4/2):4 -> (4/1):4, (4/4):2 -> (4/2):2
Mein Ansatz sieht bisher so aus und ich komme einfach nicht weiter...
Java:
public ArrayList<Move> vergleichVorNach(int [][] vor,int [][] nach){
ArrayList<Move> moves = new ArrayList<>();
//Array durchgehen
for (int i = 0 ; i < nach.length; i++) {
for (int j = 0; j < nach[i].length - 1; j++) {
//Bei einer änderung des Feldes
if (nach[i][j]!=vor[i][j]&&nach[i][j]!=0) {
//Prüfen ob nur verschoben oder vereinigt
//Dann:
Koordinate koordAlt= new Koordinate(i,j)
Koordinate koordNeu=new Koordinate(i,j+x)
Move move= new Move(koordAlt, neueKoordinate, AlterWert,NeuerWert);
Vielen Dank für Antworten und Hilfestellungen.
Liebe Grüße
Zuletzt bearbeitet von einem Moderator: