private boolean canUserMove() {
for (int i = 0; i < SIDE; i++) {
for (int j = 0; j < SIDE; j++) {
if(gameField[i][j] == 0) return true;
}
}
int[][] newarray = new int[SIDE+2][SIDE+2];
for (int i = 1; i < newarray.length-1; i++) {
for (int j = 1; j < newarray.length-1; j++) {
newarray[i][j] = gameField[i-1][j-1];
}
}
for (int i = 0; i < newarray.length; i++) {
for (int j = 0; j < newarray.length; j++) {
if(i != 0 && j != 0 && i!= newarray.length && j != newarray.length) {
if(newarray[i][j] == newarray[i-1][j] || newarray[i][j] == newarray[i+1][j] ||
newarray[i][j] == newarray[i][j-1] || newarray[i][j] == newarray[i][j+1]) return true;
}
}
}
return false;
}
package com.javarush.games.game2048;
import java.util.Arrays;
public class Test {
final static int SIDE = 4;
private static int[][] gameField = new int[SIDE][SIDE];
public static void main(String[] args) {
// int[] row1 = {4, 0, 4, 0};
// System.out.println(Arrays.toString(row1));
// if(mergeRow(row1)) System.out.println("В массиве сделаны изменения");
// else System.out.println("Массив остался без изменений");
// System.out.println(Arrays.toString(row1));
int[] row1 = {1,2,3,2};
int[] row2 = {5,4,7,4};
int[] row3 = {9,8,4,8};
int[] row4 = {3,4,7,9};
gameField[0] = row1;
gameField[1] = row2;
gameField[2] = row3;
gameField[3] = row4;
for (int i = 0; i < gameField.length; i++) {
System.out.println(Arrays.toString(gameField[i]));
}
rotateClockwise();
System.out.println();
for (int i = 0; i < gameField.length; i++) {
System.out.println(Arrays.toString(gameField[i]));
}
System.out.println(canUserMove());
}
private static boolean canUserMove() {
// for (int i = 0; i < SIDE; i++) {
// for (int j = 0; j < SIDE; j++) {
// if(gameField[i][j] == 0) return true;
// }
// }
//создадим новый массив на 2 ячейки в каждой стороне больше
int[][] newarray = new int[SIDE+2][SIDE+2];
for (int i = 1; i < newarray.length-1; i++) {
for (int j = 1; j < newarray.length-1; j++) {
newarray[i][j] = gameField[i-1][j-1];
}
}
for (int i = 0; i < newarray.length; i++) {
System.out.println(Arrays.toString(newarray[i]));
}
for (int i = 0; i < newarray.length; i++) {
for (int j = 0; j < newarray.length; j++) {
if(i != 0 && j != 0 && i != newarray.length-1 && j != newarray.length-1) {
if(newarray[i][j] == newarray[i-1][j] || newarray[i][j] == newarray[i+1][j] ||
newarray[i][j] == newarray[i][j-1] || newarray[i][j] == newarray[i][j+1]) return true;
}
}
}
return false;
}
private static void rotateClockwise() {
int[][] newarray = new int[SIDE][SIDE];
int[] row;
int end = SIDE-1;
//нужно взять строку
//и поставить в конец каждого
for (int i = 0; i < gameField.length; i++) {
row = gameField[i];
for (int j = 0; j < row.length; j++) {
newarray[j][end] = row[j];
}
end--;
}
gameField = newarray;
}
public static boolean mergeRow(int[] row) {
boolean change = false;
for (int i = 0; i < row.length-1; i++) {
if(row[i] != 0 && row[i] == row[i+1]) {
row[i] = row[i] + row[i+1];
row[i+1] = 0;
change = true;
}
}
return change;
}
}