Hallo,
ich wollte das Spiel "2048" programmieren, momentan bin ich gerade beim Verschieben der Felder. Hier meine Methode um die Felder nach rechts zu verschieben. Als Ergebnis bekomme ich in der obersten Reihe 00088. Müssten die beiden 8 dann nicht noch zur 16 werden?
ich wollte das Spiel "2048" programmieren, momentan bin ich gerade beim Verschieben der Felder. Hier meine Methode um die Felder nach rechts zu verschieben. Als Ergebnis bekomme ich in der obersten Reihe 00088. Müssten die beiden 8 dann nicht noch zur 16 werden?
Java:
private int feld[][]=
{{4, 4, 0, 4, 4 }, // als Ergebnis 00088
{ 0,0, 0, 0, 0 },
{ 0,0, 0, 0, 0},
{ 0,0, 0, 0, 0 },
{ 0,0, 0, 0, 0 }
};
private int feldGroeße=5;
private boolean rechtsVerschieben() {
int index = 0;
for (int k = 0; k < feldGroeße; k++) {
for (int i = 0; i < feldGroeße; i++) { //spalte
for (int j = feldGroeße - 1; j > 0; j--) { /zeile
if (index == k) {
break;
}
if (feld[i][j] == feld[i][j - 1] && feld[i][j] != 0) {
feld[i][j] = feld[i][j] * 2; // 2 benachbarte Felder mit gleichem Inhalt addieren
feld[i][j - 1] = 0;
index++;
}
if (feld[i][j] == 0) {
feld[i][j] = feld[i][j - 1];
feld[i][j - 1] = 0;
}
}
}
}
if (index == 0) { // es wurde nichts verschoben
return false;
}
return true; // Feld hat sich verändert ein leeres Feld kann mit 2 oder 4 gefüllt werden
}