Не проходит проверку метод mergeRow:
private boolean mergeRow(int[] row) {
if (row[0] == 0 && row[1] == 0 && row[2] == 0 && row[3] == 0) {
return false;
}
if (row[0] != row[1] && row[1] != row[2] && row[2] != row[3]) {
return false;
}
if (row [0] != 0 && row [1] == 0 && row [2] == 0 && row [3] == 0) {
return false;
}
if (row [0] == 0 && row [1] != 0 && row [2] == 0 && row [3] == 0) {
return false;
}
if (row [0] == 0 && row [1] == 0 && row [2] != 0 && row [3] == 0) {
return false;
}
if (row [0] == 0 && row [1] == 0 && row [2] == 0 && row [3] != 0) {
return false;
}
if (row [0] != 0 && row [1] == 0 && row [2] == 0 && row [3] != 0) {
return false;
}
if (row[1] !=0 && row[1] == row[0]) {
row[0] = row[0] + row [1];
row[1] = 0;
}
if (row[2] != 0 && row[2] == row[1]) {
row[1] = row[1] + row [2];
row[2] = 0;
return true;
}
if (row[3] != 0 && row[3] == row[2]) {
row[2] = row[2] + row [3];
row[3] = 0;
}
return true;
}
package com.javarush.games.game2048;
import com.javarush.engine.cell.*;
public class Game2048 extends Game {
private final static int SIDE = 4;
private int [][] gameField = new int[SIDE][SIDE];
@Override
public void initialize() {
setScreenSize(SIDE, SIDE);
createGame();
drawScene();
}
private void createGame() {
createNewNumber();
createNewNumber();
}
private void drawScene(){
for(int y = 0; y < SIDE; y++) {
for (int x = 0; x < SIDE; x++) {
setCellColoredNumber(x, y, gameField [y][x]);
}
}
}
private void createNewNumber() {
int x = getRandomNumber(SIDE);
int y = getRandomNumber(SIDE);
while (gameField[y][x] != 0) {
x = getRandomNumber(SIDE);
y = getRandomNumber(SIDE);
}
if (getRandomNumber(10) == 9) {
gameField [y][x] = 4;
} else {
gameField [y][x] = 2;
}
}
private Color getColorByValue(int value) {
if ( value == 0) {
return Color.WHITE;
}
if ( value == 2) {
return Color.RED;
}
if ( value == 4) {
return Color.GREEN;
}
if ( value == 8) {
return Color.ORANGE;
}
if ( value == 16) {
return Color.YELLOW;
}
if ( value == 32) {
return Color.BLUE;
}
if ( value == 64) {
return Color.PINK;
}
if ( value == 128) {
return Color.PURPLE;
}
if ( value == 256) {
return Color.GRAY;
}
if ( value == 512) {
return Color.OLIVE;
}
if ( value == 1024) {
return Color.DEEPPINK;
}
return Color.MAROON;
}
private void setCellColoredNumber(int x, int y, int value) {
Color a = getColorByValue(value);
String w = Integer.toString(value);
if (value == 0) {
w = "";
}
setCellValueEx(x, y, a, w);
}
private boolean compressRow (int[] row) {
if (row [0] != 0 && row [1] == 0 && row [2] == 0 && row [3] == 0) {
return false;
}
if (row [0] != 0 && row [1] != 0 && row [2] == 0 && row [3] == 0) {
return false;
}
if (row [0] != 0 && row [1] != 0 && row [2] != 0 && row [3] == 0) {
return false;
}
if (row [0] != 0 && row [1] != 0 && row [2] != 0 && row [3] != 0) {
return false;
}
if (row [0] == 0 && row [1] == 0 && row [2] == 0 && row [3] == 0) {
return false;
}
if (row [1] !=0) {
if (row [0] == 0) {
row [0] = row [1];
row [1] = 0;
}
}
if (row [2] !=0) {
if (row [1] == 0) {
if (row [0] == 0) {
row [0] = row [2];
row [2] = 0;
} else {
row [1] = row [2];
row [2] = 0;
}
}
}
if (row [3] !=0) {
if (row [2] == 0) {
if (row [1] == 0) {
if (row [0] == 0) {
row [0] = row [3];
row [3] = 0;
} else {
row [1] = row [3];
row [3] = 0;
}
} else {
row [2] = row [3];
row [3] = 0;
}
}
}
return true;
}
private boolean mergeRow(int[] row) {
if (row[0] == 0 && row[1] == 0 && row[2] == 0 && row[3] == 0) {
return false;
}
if (row[0] != row[1] && row[1] != row[2] && row[2] != row[3]) {
return false;
}
if (row [0] != 0 && row [1] == 0 && row [2] == 0 && row [3] == 0) {
return false;
}
if (row [0] == 0 && row [1] != 0 && row [2] == 0 && row [3] == 0) {
return false;
}
if (row [0] == 0 && row [1] == 0 && row [2] != 0 && row [3] == 0) {
return false;
}
if (row [0] == 0 && row [1] == 0 && row [2] == 0 && row [3] != 0) {
return false;
}
if (row [0] != 0 && row [1] == 0 && row [2] == 0 && row [3] != 0) {
return false;
}
if (row[1] !=0 && row[1] == row[0]) {
row[0] = row[0] + row [1];
row[1] = 0;
}
if (row[2] != 0 && row[2] == row[1]) {
row[1] = row[1] + row [2];
row[2] = 0;
return true;
}
if (row[3] != 0 && row[3] == row[2]) {
row[2] = row[2] + row [3];
row[3] = 0;
}
return true;
}
}