Pls help...
package com.codegym.games.game2048;
import com.codegym.engine.cell.*;
import java.util.Arrays;
public class Game2048 extends Game {
//Variables
private static final int SIDE = 4;
private int[][] gameField = new int[SIDE][SIDE];
//Methods
@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[j][i]);
}
}
}
private void createNewNumber(){
int x, y, wert;
do{
x = getRandomNumber(SIDE);
y = getRandomNumber(SIDE);
}
while(gameField[x][y] != 0);
wert = getRandomNumber(10);
if(wert == 9) gameField[y][x] = 4;
else gameField[y][x] = 2;
}
private void setCellColoredNumber(int x, int y, int value){
if(value != 0) {
setCellValueEx(x, y, getColorByValue(value), "" + value);
}
else{
setCellValueEx(x, y, getColorByValue(value), "");
}
}
private Color getColorByValue(int value){
switch(value){
case 2: return Color.BLUE;
case 4: return Color.RED;
case 8: return Color.GREEN;
case 16: return Color.CYAN;
case 32: return Color.GRAY;
case 64: return Color.MAGENTA;
case 128: return Color.ORANGE;
case 256: return Color.PINK;
case 512: return Color.YELLOW;
case 1024: return Color.PURPLE;
case 2048: return Color.BROWN;
default: return Color.WHITE;
}
}
private boolean compressRow(int[] row) {
int temp = 0;
int[] rowclone = row.clone();
boolean isChanged = false;
for(int i = 0; i < row.length; i++) {
for(int j = 0; j < row.length-i-1; j++){
if(row[j] == 0) {
temp = row[j];
row[j] = row[j+1];
row[j+1] = temp;
}
}
}
if(!Arrays.equals(row, rowclone))
isChanged = true;
// row = rowtemp;
return isChanged;
}
private boolean mergeRow(int[] row){
boolean moved = false;
for (int i=0; i< row.length-1;i++)
if ((row[i] == row[i+1])&&(row[i]!=0)){
row[i] = 2*row[i];
row[i+1] = 0;
moved = true;
}
return moved;
}
public void onKeyPress(Key key){
if (key == Key.LEFT) moveLeft();
else if (key == Key.UP) moveUp();
else if (key == Key.RIGHT) moveRight();
else if (key == Key.DOWN) moveDown();
if(key == Key.UP || key == Key.LEFT || key == Key.RIGHT || key == Key.DOWN) {
drawScene();
}
}
private void moveLeft(){
boolean veraendert = false;
for(int i = 0; i < SIDE; i++){
if(compressRow(gameField[i])){
veraendert = true;
}
if(mergeRow(gameField[i])){
veraendert = true;
}
if(compressRow(gameField[i])){
veraendert = true;
}
}
if(veraendert) createNewNumber();
}
private void moveUp(){
}
private void moveRight(){
}
private void moveDown(){
}
private void rotateClockwise(){
int[][]safe = gameField;
for(int i = 0; i < SIDE; i++){
gameField[i][0] = safe[3][i];
}
for(int i = 0; i < SIDE; i++){
gameField[i][1] = safe[2][i];
}
for(int i = 0; i < SIDE; i++){
gameField[i][2] = safe[1][i];
}
for(int i = 0; i < SIDE; i++){
gameField[i][3] = safe[0][i];
}
}
}