ΠΠ΅ ΡΠ΄Π°Π΅ΡΡΡ ΠΏΡΠΎΠΉΡΠΈ ΠΏΡΠ½ΠΊΡ 3 ΠΈ 5. ΠΠΎΠΌΠΎΠ³ΠΈΡΠ΅ ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°!! ΠΠΎΡΡΡΡ ΡΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ²
package com.javarush.games.minesweeper;
import com.javarush.engine.cell.*;
import java.util.ArrayList;
import java.util.List;
public class MinesweeperGame extends Game {
private static final int SIDE = 9;
private GameObject[][] gameField = new GameObject[SIDE][SIDE];
private int countMinesOnField;
@Override
public void initialize() {
//Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎΠ»Ρ 10x10
setScreenSize(SIDE, SIDE);
createGame();
}
private void createGame() {
for (int i = 0; i < 1; i++) {
for(int j = 0; j < 1; j++) {
if (getRandomNumber(10) == 1) {
gameField[i][j] = new GameObject(j, i, true);
countMinesOnField++;
} else {
gameField[i][j] = new GameObject(j, i, false);
}
setCellColor(j, i, Color.ORANGE);
}
}
countMineNeighbors();
}
public ArrayList<GameObject> getNeighbors(GameObject obj) {
ArrayList<GameObject> neighbors = new ArrayList<>();
int x = obj.x;
int y = obj.y;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
try {
neighbors.add(gameField[(y-1)+i][(x-1)+j]);
} catch (IndexOutOfBoundsException e) {
System.out.println(e);
}
}
}
return neighbors;
}
private void countMineNeighbors(){
for (int i = 0; i < SIDE; i++){
for (int j = 0; j < SIDE; j++){
if (!(gameField[i][j].isMine)){
gameField[i][j].countMineNeighbors = 0;
ArrayList<GameObject> list = getNeighbors(gameField[i][j]);
for (GameObject object : list){
if (object.isMine) gameField[i][j].countMineNeighbors++; }
}
}
}
}
/*private void countMineNeighbors() {
for (int i = 0; i < SIDE; i++) {
for (int j = 0; j < SIDE; j++) {
if (!gameField[i][j].isMine) {
List<GameObject> neighbors = getNeighbors(gameField[i][j]);
for (int z = 0; z < neighbors.size(); z++) {
if (neighbors.get(z).isMine) {
gameField[i][j].countMineNeighbors++;
}
}
}
}
}
}*/
}