Пишет "Проверь, что метод mergeRow(int[]) возвращает true, если он изменил входящий массив.", хотя все должно работать, кто-нибудь сталкивался с этим?
package com.javarush.games.game2048;
import com.javarush.engine.cell.*;
import java.util.Arrays;
public class Game2048 extends Game{
private static final int SIDE = 4;
// private int[][] gameField = new int[SIDE][SIDE];
private int[][] gameField = {
{ 2, 4, 8, 16},
{ 32, 64, 128, 256},
{512, 1024, 2048, 0},
{ 2, 4, 8, 16}
};
@Override
public void initialize() {
setScreenSize(SIDE, SIDE);
createGame();
drawScene();
}
private void createGame() {
createNewNumber();
createNewNumber();
}
private void drawScene() {
for(int i = 0; i < SIDE; i++) {
for(int j = 0; j < SIDE; j++) {
int value = gameField [j][i];
setCellColoredNumber(i, j, value);
}
}
}
private void createNewNumber() {
int x = getRandomNumber(SIDE);
int y = getRandomNumber(SIDE);
if(gameField[x][y] == 0) {
if(getRandomNumber(10) == 9) {
gameField[x][y] = 4;
} else {
gameField[x][y] = 2;
}
} else {
createNewNumber();
}
}
private Color getColorByValue(int value) {
switch(value) {
case 2 : return Color.PINK;
case 4 : return Color.VIOLET;
case 8 : return Color.INDIGO;
case 16 : return Color.BLUE;
case 32 : return Color.GREEN;
case 64 : return Color.SALMON;
case 128 : return Color.ORANGE;
case 256 : return Color.CORAL;
case 512 : return Color.ORCHID;
case 1024 : return Color.MAGENTA;
case 2048 : return Color.CHOCOLATE;
default : return Color.WHITE;
}
}
private void setCellColoredNumber(int x, int y, int value) {
Color color = getColorByValue(value);
String string;
if(value == 0) {
string = "";
} else {
string = String.valueOf(value);
}
setCellValueEx(x, y, color, string);
}
private boolean compressRow(int[] row) {
for(int i = 0; i < row.length - 1; i++) {
if(row[i] == 0 && row[i + 1] > 0) {
row[i] = row[i + 1];
row[i + 1] = 0;
compressRow(row);
return true;
}
}
return false;
}
private boolean mergeRow(int[] row) {
int[] clone = row.clone();
for(int i = 0; i < row.length - 1; i++) {
if(row[i] != 0 && row[i] == row[i + 1]) {
row[i] = row[i] + row[i + 1];
row [i + 1] = 0;
}
}
return Arrays.equals(row, clone);
}
}