private void mergeTiles(Tile[] tiles) {
for (int i = 0; i < tiles.length - 1; i++) {
if(tiles[i].value != 0 && tiles[i].value == tiles[i+1].value) {
tiles[i].value += tiles[i+1].value;
tiles[i+1].value = 0;
score += tiles[i].value;
if(tiles[i].value > maxTile) {
maxTile = tiles[i].value;
}
}
}
}
ΠΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ, ΡΠ²Π»ΡΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡΠ°Π²ΠΎ, Π²Π²Π΅ΡΡ
ΠΈ Π²Π½ΠΈΠ·.
ΠΡΠ»ΠΈ ΡΡ ΡΠ°Π½ΡΡΠ΅ ΡΠΆΠ΅ ΠΈΠ³ΡΠ°Π» Π² 2048, ΡΠΎ Π·Π½Π°Π΅ΡΡ, ΡΡΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ Π² ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΡΠΎΡΠΎΠ½, ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ»ΠΈΡΠΎΠΊ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π½Π° ΠΌΠ΅ΡΡΠΎ ΠΏΡΡΡΡΡ
, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΏΠ»ΠΈΡΠΎΠΊ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠΈΠ½Π°Π»Π°.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²Π»Π΅Π²ΠΎ ΠΈ ΠΏΠΎΠ΄ΡΠΌΠ°Π΅ΠΌ ΡΡΠΎ ΠΆΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅.
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠ΄Π° ΠΈΠ»ΠΈ ΡΡΠΎΠ»Π±ΡΠ°, ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΡΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΄Π²Π΅ Π²Π΅ΡΠΈ:
Π°) Π‘ΠΆΠ°ΡΠΈΠ΅ ΠΏΠ»ΠΈΡΠΎΠΊ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ ΠΏΡΡΡΡΠ΅ ΠΏΠ»ΠΈΡΠΊΠΈ Π±ΡΠ»ΠΈ ΡΠΏΡΠ°Π²Π°, Ρ.Π΅. ΡΡΠ΄ {4, 2, 0, 4} ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΠ΄ΠΎΠΌ {4, 2, 4, 0}
Π±) Π‘Π»ΠΈΡΠ½ΠΈΠ΅ ΠΏΠ»ΠΈΡΠΎΠΊ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠΈΠ½Π°Π»Π°, Ρ.Π΅. ΡΡΠ΄ {4, 4, 2, 0} ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΠ΄ΠΎΠΌ {8, 2, 0, 0}.
ΠΠ±ΡΠ°ΡΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠ΄ {4, 4, 4, 4} ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡΡ Π² {8, 8, 0, 0}, Π° {4, 4, 4, 0} Π² {8, 4, 0, 0}.
Π‘ΠΎΠ·Π΄Π°ΠΉ ΠΌΠ΅ΡΠΎΠ΄Ρ compressTiles(Tile[] tiles) ΠΈ mergeTiles(Tile[] tiles), ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΏΡΠ½ΠΊΡΡ Π°) ΠΈ Π±) ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΡ ΠΈΡ Π±ΡΠ΄Π΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° Model, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΎΠ²Π΅Π½Ρ Π΄ΠΎΡΡΡΠΏΠ° ΡΠ΄Π΅Π»Π°ΠΉ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ·ΠΊΠΈΠΌ.
Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Ρ ΠΏΠΎΠ»Ρ score ΠΈ maxTile ΡΠΈΠΏΠ° int, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Ρ
ΡΠ°Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΡΠ΅Ρ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π²Π΅Ρ ΠΏΠ»ΠΈΡΠΊΠΈ Π½Π° ΠΈΠ³ΡΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅. Π‘ΡΠ΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»ΠΈΡΠ½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΡΠ΅Ρ 20 ΠΈ Π±ΡΠ»ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΡΡΠ΄Π° {4, 4, 4, 0}, ΡΡΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡΡ Π½Π° 8. Π£ΡΠΎΠ²Π΅Π½Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠΎΠ»ΡΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΈΡΠ΅ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠ³ΠΎ.
ΠΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠΈΡ
ΠΏΠΎΠ»Π΅ΠΉ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ mergeTiles, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊ:
1. ΠΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΏΠ»ΠΈΡΠΎΠΊ, ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅Π½ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ maxTile.
2. Π£Π²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ score Π½Π° Π²Π΅Π»ΠΈΡΠΈΠ½Ρ Π²Π΅ΡΠ° ΠΏΠ»ΠΈΡΠΊΠΈ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π²ΡΠ΅ΠΉΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΡ.
P.S. ΠΠΎΠ³Π΄Π° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ, ΡΠΆΠ°ΡΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ΅Π³Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ΅ΡΡ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ Π² ΠΌΠ΅ΡΠΎΠ΄ mergeTiles Π²ΡΠ΅Π³Π΄Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠ»ΠΈΡΠΎΠΊ Π±Π΅Π· ΠΏΡΡΡΡΡ Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅.
- ΠΠ΅ΡΠΎΠ΄ mergeTiles Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ Π·Π°Π΄Π°ΡΠΈ.
- ΠΠ΅ΡΠΎΠ΄ compressTiles Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ Π·Π°Π΄Π°ΡΠΈ.
- ΠΠ΅ΡΠΎΠ΄ compressTiles Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌ.
- ΠΠ΅ΡΠΎΠ΄ mergeTiles Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌ.
- ΠΠ΅ΡΠΎΠ΄ mergeTiles Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ score.
- ΠΠ΅ΡΠΎΠ΄ mergeTiles Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ maxTile.
- ΠΠΎΠ»Ρ score ΠΈ maxTile Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π½ΡΠ»Π΅ΠΌ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ.