private boolean compressRow(int[] row) {
int[] tempRow = new int[SIDE];
int j = 0;
for (int i = 0; i < SIDE; i++) {
if (row[i] != 0) {
tempRow[j] = row[i];
j++;
} else {
tempRow[SIDE - i + j - 1] = 0;
}
}
int n = 0;
for (int i = 0; i < SIDE; i++) {
if (tempRow[i] == row[i]) {
n++;
}
}
if (n == SIDE) {
return false;
} else {
row = tempRow;
return true;
}
}
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];
private Color getColorByValue(int value) {
Color cellColor = Color.WHITE;
switch (value) {
case (0):
cellColor = Color.MAGENTA;
break;
case (2):
cellColor = Color.GRAY;
break;
case (4):
cellColor = Color.YELLOW;
break;
case (8):
cellColor = Color.ORANGE;
break;
case (16):
cellColor = Color.RED;
break;
case (32):
cellColor = Color.BROWN;
break;
case (64):
cellColor = Color.BLACK;
break;
case (128):
cellColor = Color.BLUE;
break;
case (256):
cellColor = Color.PURPLE;
break;
case (512):
cellColor = Color.PINK;
break;
case (1024):
cellColor = Color.WHITE;
break;
case (2048):
cellColor = Color.GREEN;
break;
default:
break;
}
return cellColor;
}
private void setCellColoredNumber(int x, int y, int value) {
String valueString = Integer.toString(value);
Color cellColor = getColorByValue(value);
if (value !=0) {
setCellValueEx(x, y, cellColor, valueString);
} else {
setCellValueEx(x, y, cellColor, "");
}
}
private void createNewNumber() {
int randCellX;
int randCellY;
do {
randCellX = getRandomNumber(SIDE);
randCellY = getRandomNumber(SIDE);
} while (gameField[randCellX][randCellY] != 0);
if (getRandomNumber(10) == 9 ) {
gameField[randCellX][randCellY] = 4;
} else {
gameField[randCellX][randCellY] = 2;
}
}
private boolean compressRow(int[] row) {
int[] tempRow = new int[SIDE];
int j = 0;
for (int i = 0; i < SIDE; i++) {
if (row[i] != 0) {
tempRow[j] = row[i];
j++;
} else {
tempRow[SIDE - i + j - 1] = 0;
}
}
int n = 0;
for (int i = 0; i < SIDE; i++) {
if (tempRow[i] == row[i]) {
n++;
}
}
if (n == SIDE) {
return false;
} else {
row = tempRow;
return true;
}
}
private void createGame() {
createNewNumber();
createNewNumber();
}
private void drawScene() {
setCellColoredNumber(0, 0, gameField[0][0]);
setCellColoredNumber(0, 1, gameField[1][0]);
setCellColoredNumber(0, 2, gameField[2][0]);
setCellColoredNumber(0, 3, gameField[3][0]);
setCellColoredNumber(1, 0, gameField[0][1]);
setCellColoredNumber(1, 1, gameField[1][1]);
setCellColoredNumber(1, 2, gameField[2][1]);
setCellColoredNumber(1, 3, gameField[3][1]);
setCellColoredNumber(2, 0, gameField[0][2]);
setCellColoredNumber(2, 1, gameField[1][2]);
setCellColoredNumber(2, 2, gameField[2][2]);
setCellColoredNumber(2, 3, gameField[3][2]);
setCellColoredNumber(3, 0, gameField[0][3]);
setCellColoredNumber(3, 1, gameField[1][3]);
setCellColoredNumber(3, 2, gameField[2][3]);
setCellColoredNumber(3, 3, gameField[3][3]);
}
@Override
public void initialize() {
setScreenSize(SIDE, SIDE);
createGame();
drawScene();
}
}