private boolean compressRow(int[] row) {
boolean result = false;
int[] newRow = new int[row.length];
int index = 0;
for (int i = 0; i < row.length; i++ ){
if (row[i] != 0) {
newRow[i] = row[i];
if (i != index){
result = true;
}
index++;
}
}
for (int i = 0; i < newRow.length; i++){
row[i] = newRow[i];
}
return result;
}
Товарищи, доброго времени. Тестировал с выводом на экран массивов, всё меняет, возвращает что нужно, в чём беда?
package com.javarush.games.game2048;
import com.javarush.engine.cell.*;
import java.util.Arrays;
public class Game2048 extends Game {
private static final int SIDE = 4;
private int[][] gameField = new int[SIDE][SIDE];
@Override
public void initialize() {
setScreenSize(SIDE,SIDE);
createGame();
drawScene();
}
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(){
boolean isCreated = false;
do {
int x = getRandomNumber(SIDE);
int y = getRandomNumber(SIDE);
if (gameField[y][x] == 0) {
gameField[y][x] =
getRandomNumber(10) < 9 ? 2 : 4;
isCreated = true;
}
}
while (!isCreated);
}
private Color getColorByValue(int value) {
switch (value) {
case 0:
return Color.WHITE;
case 2:
return Color.CHOCOLATE;
case 4:
return Color.PINK;
case 8:
return Color.YELLOWGREEN;
case 16:
return Color.GREEN;
case 32:
return Color.BLUE;
case 64:
return Color.ORANGE;
case 128:
return Color.GOLDENROD;
case 256:
return Color.GOLD;
case 512:
return Color.SILVER;
case 1024:
return Color.VIOLET;
case 2048:
return Color.WHEAT;
default:
return Color.NONE;
}
}
private void setCellColoredNumber (int x, int y, int value) {
Color color = getColorByValue(value);
String str = value > 0 ? "" + value : "";
setCellValueEx(x, y, color, str);
}
private boolean compressRow(int[] row) {
boolean result = false;
int[] newRow = new int[row.length];
int index = 0;
for (int i = 0; i < row.length; i++ ){
if (row[i] != 0) {
newRow[i] = row[i];
if (i != index){
result = true;
}
index++;
}
}
for (int i = 0; i < newRow.length; i++){
row[i] = newRow[i];
}
return result;
}
}