Раньше не проходил только 7ой пункт, насмотрелась похожих вопросов, теперь не проходит 7 и 8. Объясните, пожалуйста в каких случаях, методах мы меняем координаты местами и почему.
"при установке значения игровому полю используй инвертированные координаты матрицы. Например, для установки значения клетке с координатами (x, y) используй значение матрицы gameField[y][x]."
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 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] );
// setCellColor (i,j,Color.DEEPSKYBLUE);
}
}
}
private void createNewNumber(){
boolean flag =true;
while (flag){
int x = getRandomNumber(SIDE);
int y = getRandomNumber(SIDE);
if (gameField [x][y] ==0){
int temp = getRandomNumber(10);
if(temp>8)
gameField [x][y] =4;
else gameField [x][y] =2;
flag=false;
System.out.println("x:"+ x + " y:"+y);
}
}
}
private Color getColorByValue(int value) {
switch (value){
case 0: return Color.WHITE;
case 2: return Color.LIGHTPINK;
case 4: return Color.BLUEVIOLET;
case 8: return Color.BLUE;
case 16: return Color.CYAN;
case 32: return Color.LIGHTSEAGREEN;
case 64: return Color.LIMEGREEN;
case 128: return Color.ORANGE;
case 256: return Color.INDIANRED;
case 512: return Color.RED;
case 1024: return Color.MAGENTA;
case 2048: return Color.MEDIUMVIOLETRED;
}
return Color.WHITE;
}
private void setCellColoredNumber(int x, int y, int value){
setCellValueEx(y, x, getColorByValue(value), ((value == 0) ? "" : "" + value));
}
public void initialize() {
setScreenSize(SIDE, SIDE);
createGame();
drawScene();
}
}
