public class Game2048 extends Game {
    private static final int SIDE = 4;

    private int[][] gameField = new int[SIDE][SIDE];//{
             //{0,0,0,0},
             //{0,0,0,0},
             //{0,0,0,0},
             //{0,0,0,0}};
    //{2,4,8,16},
    //{32,64,128,256},
    //{512,1024,2048,0},
    //{2,4,8,16}};

    private void drawScene(){
        for (int i = 0; i < gameField.length; i++){
            for(int j = 0; j < gameField[i].length; j++){
                setCellColoredNumber(j, i, gameField[j][i]);
            }
        }
    }
    @Override
    public void initialize() {

        setScreenSize(SIDE,SIDE);
        createGame();
        drawScene();
    }

    private void createGame(){
        createNewNumber();
        createNewNumber();
    }
    private void createNewNumber() {
        while (true) {
            int x = getRandomNumber(SIDE);
            int y = getRandomNumber(SIDE);
            int z = getRandomNumber(10);
            if (z < 9 && gameField[x][y] == 0) {
                gameField[x][y] = 2;
                break;
            } else if (z == 9 && gameField[x][y] == 0) {
                gameField[x][y] = 4;
                break;
            }

        }
    }
    private Color getColorByValue(int value){
        Color color = null;
        if (value == 0) color = Color.SILVER;
        if (value == 2) color = Color.WHITE;
        if (value == 4) color = Color.AQUA;
        if (value == 8) color = Color.BLUE;
        if (value == 16) color = Color.ROSYBROWN;
        if (value == 32) color = Color.AQUAMARINE;
        if (value == 64) color = Color.YELLOW;
        if (value == 128) color = Color.DIMGRAY;
        if (value == 256) color = Color.LAVENDER;
        if (value == 512) color = Color.LIGHTSTEELBLUE;
        if (value == 1024) color = Color.GRAY;
        if (value == 2048) color = Color.RED;
        return color;
    }
    private void setCellColoredNumber(int x, int y, int value){
        if (value == 0) setCellValueEx(y, x, getColorByValue(value),"");
        else setCellValueEx(y, x, getColorByValue(value),String.valueOf(value));



    }