From 8ec019713c81e6476034ea45f64a59d411b13e40 Mon Sep 17 00:00:00 2001 From: LunarAkai Date: Sun, 24 Mar 2024 19:04:27 +0100 Subject: [PATCH] first click should always be a zero --- .../minecleaner/MinecleanerArena.java | 7 +++ .../de/lunarakai/minecleaner/game/Game.java | 52 +++++++++++++++++-- 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/lunarakai/minecleaner/MinecleanerArena.java b/src/main/java/de/lunarakai/minecleaner/MinecleanerArena.java index bc96bbd..2788c94 100644 --- a/src/main/java/de/lunarakai/minecleaner/MinecleanerArena.java +++ b/src/main/java/de/lunarakai/minecleaner/MinecleanerArena.java @@ -36,6 +36,7 @@ public class MinecleanerArena { private ArenaStatus arenaStatus = ArenaStatus.INACTIVE; private UUID[] blockDisplays; // private UUID[] textDisplays; + private boolean hasMadeFirstClick = false; private int flagsPlaced = 0; @@ -268,6 +269,7 @@ public class MinecleanerArena { currentMinecleanerGame = new Game(plugin, BoardSize.boardSizes[widthIndex], BoardSize.mineCounter[widthIndex]); currentMinecleanerGame.start(); flagsPlaced = 0; + hasMadeFirstClick = false; arenaStatus = ArenaStatus.PLAYING; currentGameStartTime = System.currentTimeMillis(); } @@ -340,6 +342,11 @@ public class MinecleanerArena { Cell cell = currentMinecleanerGame.getCell(x, y); if(!cell.isFlagged()) { Player player = this.currentPlayer; + + if(!hasMadeFirstClick) { + currentMinecleanerGame.firstClick(x, y); + hasMadeFirstClick = true; + } currentMinecleanerGame.reveal(x, y); setBlockForCellType(x, y, cell); diff --git a/src/main/java/de/lunarakai/minecleaner/game/Game.java b/src/main/java/de/lunarakai/minecleaner/game/Game.java index 9ce2466..86ea776 100644 --- a/src/main/java/de/lunarakai/minecleaner/game/Game.java +++ b/src/main/java/de/lunarakai/minecleaner/game/Game.java @@ -45,12 +45,17 @@ public class Game { gameover = false; generateCells(); - generateMines(); - generateNumbers(); + //generateMines(); + //generateNumbers(); board.draw(state, tilemap); } + public void firstClick(int xFirst, int yFirst) { + generateMines(xFirst, yFirst); + generateNumbers(); + } + private void generateCells() { for (int x = 0; x < width; x ++) { for (int y = 0; y < height; y++) { @@ -62,11 +67,52 @@ public class Game { } } - private void generateMines() { + private void generateMines(int xFirst, int yFirst) { for (int i = 0; i < mineCount; i++) { int x = (int) (Math.random() * width); int y = (int) (Math.random() * height); + if(x == xFirst && y == yFirst) { + i--; + continue; + } + if(x == xFirst +1 && y == yFirst) { + i--; + continue; + } + if(x == xFirst +1 && y == yFirst -1) { + i--; + continue; + } + if(x == xFirst -1 && y == yFirst) { + i--; + continue; + } + if(x == xFirst && y == yFirst +1) { + i--; + continue; + } + if(x == xFirst && y == yFirst -1) { + i--; + continue; + } + if(x == xFirst +1 && y == yFirst +1) { + i--; + continue; + } + if(x == xFirst +1 && y == yFirst -1) { + i--; + continue; + } + if(x == xFirst -1 && y == yFirst -1) { + i--; + continue; + } + if(x == xFirst -1 && y == yFirst +1) { + i--; + continue; + } + while (state[x][y].type == Cell.CellType.Mine) { x++;