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[4][4];
public void initialize() {
setScreenSize(SIDE, SIDE);
createGame();
drawScene();
}
private void createGame() {
createNewNumber();
createNewNumber();
}
private void createNewNumber() {
int x = getRandomNumber(SIDE);
int y = getRandomNumber(SIDE);
int rand = getRandomNumber(10) /*== 9 ? 4 : 2*/;
boolean check = true;
while (check) {
if (gameField[x][y] == 0) {
if (rand != 9) {
gameField[x][y] = 2;
} else {
gameField[x][y] = 4;
}
check = false;
} else {
x = getRandomNumber(SIDE);
y = getRandomNumber(SIDE);
}
}
}
private void setCellColoredNumber(int x, int y, int value) {
Color color = getColorByValue(value);
if (value == 0) {
setCellValueEx(x, y, color, "");
} else {
setCellValueEx(x, y, color, value + "");
}
}
private Color getColorByValue(int value) {
Color color = null;
switch (value) {
case 0:
color = Color.WHITE;
break;
case 2:
color = Color.BLUE;
break;
case 4:
color = Color.GOLD;
break;
case 8:
color = Color.BLUEVIOLET;
break;
case 16:
color = Color.BEIGE;
break;
case 32:
color = Color.BISQUE;
break;
case 64:
color = Color.BLACK;
break;
case 128:
color = Color.GREENYELLOW;
break;
case 256:
color = Color.LIGHTGOLDENRODYELLOW;
break;
case 512:
color = Color.DARKMAGENTA;
break;
case 1024:
color = Color.CHOCOLATE;
break;
case 2048:
color = Color.OLIVEDRAB;
break;
}
return color;
}
private boolean compressRow(int[] row) {
boolean flagCheck = false;
for (int i = 0; i < row.length ; i++) {
if (row[i] == 0){
for (int j = i; j < row.length ; j++)
if (row[j] != 0){
int tmp = row[i];
row[i] = row[j];
row[j] = tmp;
flagCheck = true;
}
}else{}
}
return flagCheck;
}
private void drawScene() {
for (int i = 0; i < gameField.length; i++) {
for (int j = 0; j < gameField.length; j++)
setCellColoredNumber(j, i, gameField[i][j]);
}
}
}
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[4][4];
public void initialize() {
setScreenSize(SIDE, SIDE);
createGame();
drawScene();
}
private void createGame() {
createNewNumber();
createNewNumber();
}
private void createNewNumber() {
int x = getRandomNumber(SIDE);
int y = getRandomNumber(SIDE);
int rand = getRandomNumber(10) /*== 9 ? 4 : 2*/;
boolean check = true;
while (check) {
if (gameField[x][y] == 0) {
if (rand != 9) {
gameField[x][y] = 2;
} else {
gameField[x][y] = 4;
}
check = false;
} else {
x = getRandomNumber(SIDE);
y = getRandomNumber(SIDE);
}
}
}
private void setCellColoredNumber(int x, int y, int value) {
Color color = getColorByValue(value);
if (value == 0) {
setCellValueEx(x, y, color, "");
} else {
setCellValueEx(x, y, color, value + "");
}
}
private Color getColorByValue(int value) {
Color color = null;
switch (value) {
case 0:
color = Color.WHITE;
break;
case 2:
color = Color.BLUE;
break;
case 4:
color = Color.GOLD;
break;
case 8:
color = Color.BLUEVIOLET;
break;
case 16:
color = Color.BEIGE;
break;
case 32:
color = Color.BISQUE;
break;
case 64:
color = Color.BLACK;
break;
case 128:
color = Color.GREENYELLOW;
break;
case 256:
color = Color.LIGHTGOLDENRODYELLOW;
break;
case 512:
color = Color.DARKMAGENTA;
break;
case 1024:
color = Color.CHOCOLATE;
break;
case 2048:
color = Color.OLIVEDRAB;
break;
}
return color;
}
private boolean compressRow(int[] row) {
boolean flagCheck = false;
for (int i = 0; i < row.length ; i++) {
if (row[i] == 0){
for (int j = i; j < row.length ; j++)
if (row[j] != 0){
int tmp = row[i];
row[i] = row[j];
row[j] = tmp;
flagCheck = true;
}
}else{}
}
return flagCheck;
}
private void drawScene() {
for (int i = 0; i < gameField.length; i++) {
for (int j = 0; j < gameField.length; j++)
setCellColoredNumber(j, i, gameField[i][j]);
}
}
}