hgighvug
package com.codegym.games.game2048;
import com.codegym.engine.cell.*;
public class Game2048 extends Game{
private static final int SIDE = 4;
private int[][] gameField = new int[4][4];
private void createGame(){
createNewNumber();
createNewNumber();
}
private void drawScene(){
for(int i=0 ; i<SIDE; i++){
for(int j=0; j<SIDE ; j++){
setCellColoredNumber(i , j, (gameField[j][i]));
}
}
}
private void createNewNumber(){
int x = getRandomNumber(SIDE);
int y = getRandomNumber(SIDE);
int value;
if(getRandomNumber(10) == 9){
value = 4;
}
else{
value = 2;
}
if (gameField[x][y] != 0){
createNewNumber();
}
else{
gameField[x][y] = value;
}
}
private Color getColorByValue(int value){
switch(value){
case 0: return Color.WHITE;
case 2: return Color.GRAY;
case 4: return Color.VIOLET;
case 8: return Color.PURPLE;
case 16: return Color.INDIGO;
case 32: return Color.BLUE;
case 64: return Color.GREEN;
case 128: return Color.YELLOW;
case 256: return Color.ORANGE;
case 512: return Color.PINK;
case 1024: return Color.RED;
case 2048: return Color.BROWN;
default: return Color.WHITE;
}
}
private void setCellColoredNumber(int x, int y, int value){
if (value != 0){
setCellValueEx(x, y, getColorByValue(value) , Integer.toString(value));
}
else
setCellValueEx(x, y, getColorByValue(value) , "");
}
private static boolean compressRow(int[] row){
boolean shifted = false;
for(int i=0 ;i < SIDE ;i++){
for(int j = i+1; j<SIDE ; j++){
if(row[i] == 0){
if(row[j] != 0)
shifted = true;
row[i] = row[j];
row[j] = 0;
}
}
}
return shifted;
}
public boolean mergeRow(int[] row){
boolean merged = false;
for(int i =0 ; i < SIDE-1 ; i++){
if(row[i] == row[i+1] && row[i] !=0){
row[i]=2*row[i];
row[i+1]=0;
merged = true;
}
}
return merged;
}
private void moveLeft(){
boolean m , s;
for(int i = 0, j=0; i < SIDE ; i++ ){
compressRow( gameField[i] );
mergeRow( gameField[i] );
if( !compressRow(gameField[i]) && !mergeRow(gameField[i]) ){
}
else{
compressRow( gameField[i] );
createNewNumber();
}
}
drawScene();
}
private void moveRight(){
drawScene();
}
private void moveUp(){
drawScene();
}
private void moveDown(){
drawScene();
}
@Override
public void onKeyPress( Key key ){
if(key == Key.LEFT){
moveLeft(); }
else if(key == Key.RIGHT){
moveRight(); }
else if (key == Key.UP){
moveUp(); }
else if (key == Key.DOWN){
moveDown(); }
}
@Override
public void initialize(){
setScreenSize(SIDE , SIDE);
createGame();
drawScene();
}
// public static void main(String [] args){
// Game2048 g = new Gamw2048();
// }
}