В методе drawScene() должен быть заменен вызов метода setCellColor(int, int, Color) на setCellColoredNumber(int, , int, int), чтобы значения и цвета плиток игрового поля на экране соответствовали значениям в матрице gameField.
Проверь, что значения плиток на игровом поле соответствуют значениям в матрице.
package com.javarush.games.game2048;
import com.javarush.engine.cell.*;
public class Game2048 extends Game {
private static final 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 i = 0; i < 4; i++)
for (int j = 0; j < 4; j++) {
setCellColoredNumber(i, j, gameField[i][j]);
}
}
private void createNewNumber() {
int x;
int y;
while (true) {
x = getRandomNumber(SIDE);
y = getRandomNumber(SIDE);
if(gameField[x][y] == 0)
break;
}
if (getRandomNumber(10) == 9)
gameField[x][y] = 4;
else
gameField[x][y] = 2;
}
private Color getColorByValue(int value) {
switch (value) {
case 2:
return Color.BLUE;
case 4:
return Color.ALICEBLUE;
case 8:
return Color.BEIGE;
case 16:
return Color.GAINSBORO;
case 32:
return Color.DARKSALMON;
case 64:
return Color.MAGENTA;
case 128:
return Color.GOLD;
case 256:
return Color.CORAL;
case 512:
return Color.RED;
case 1024:
return Color.FIREBRICK;
case 2048:
return Color.NAVY;
default:
return Color.WHITE;
}
}
private void setCellColoredNumber(int x, int y, int value ) {
if (value == 0)
setCellValueEx(x, y, getColorByValue(value), "");
else
setCellValueEx(x, y, getColorByValue(value), String.valueOf(value));
}
}