не понимаю, что не так
package com.javarush.games.game2048;
import com.javarush.engine.cell.Game;
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 x = 0; x < SIDE; x++) {
for (int y = 0; y < SIDE; y++) {
int v = gameField[y][x];
setCellColoredNumber(x, y, v);
}
}
}
private void createNewNumber() {
int x = getRandomNumber(SIDE);
int y = getRandomNumber(SIDE);
int number = getRandomNumber(10);
if (gameField[y][x] == 0) {
if (number < 9) gameField[y][x] = 2;
else
gameField[y][x] = 4;
} else createNewNumber();
}
private Color getColorByValue(int value) {
Color c = null;
if (value == 2) c = Color.AQUA;
if (value == 2) c = Color.GRAY;
if (value == 4) c = Color.RED;
if (value == 8) c = Color.FIREBRICK;
if (value == 16) c = Color.LAVENDER;
if (value == 32) c = Color.GREENYELLOW;
if (value == 64) c = Color.TEAL;
if (value == 128) c = Color.NAVAJOWHITE;
if (value == 256) c = Color.MAGENTA;
if (value == 512) c = Color.CRIMSON;
if (value == 1024) c = Color.LIME;
if (value == 2048) c = Color.TOMATO;
return c;
}
private void setCellColoredNumber(int x, int y, int value) {
Color color = getColorByValue(gameField[y][x]);
if (value == 0) {
setCellValueEx(x, y, color, "");
} else setCellValueEx(x, y, color, String.valueOf(value));
}
private boolean compressRow(int[] row) {
boolean result = false;
for (int j = 0; j < SIDE; j++) {
for (int i = 1; i < SIDE; i++) {
//int temp = gameField[i-1];
if (row[i - 1] == 0 && row[i] != 0) {
int temp = row[i - 1];
row[i - 1] = row[i];
row[i] = temp;
result = true;
}
}
}
return result;
}
private boolean mergeRow(int[] row) {
boolean result = false;
for (int i = 1; i < SIDE; i++) {
if (row[i - 1] == row[i] && row[i - 1] != 0) {
row[i - 1] *= 2;
row[i] = 0;
i++;
result = true;
}
}
return result;
}
@Override
public void onKeyPress(Key key) {
switch (key) {
case LEFT:moveLeft();
break;
case RIGHT:
moveRight();
break;
case UP:
moveUp();
break;
case DOWN:
moveDown();
}
}
private void moveLeft() {
boolean compressRow = false;
boolean mergeRow=false;
for (int i = 0; i < SIDE; i++) {
if (compressRow(gameField[i])){
compressRow=true;}
if (mergeRow(gameField[i]) || compressRow == true){
mergeRow=true;}
if (compressRow(gameField[i])||mergeRow==true) {
compressRow = true;
}
if (compressRow == true || mergeRow == true) {
createNewNumber();
drawScene();
}
}
}
private void moveRight() {
}
private void moveUp() {
}
private void moveDown() {
}
}