From c3d8b672b12a4952d771777a28501ef0bd95e6fa Mon Sep 17 00:00:00 2001 From: "tyler :3" Date: Fri, 17 May 2024 19:11:59 +0100 Subject: [PATCH] flagging fixes --- .../com/shr4pnel/minesweeper/Controller.java | 38 +++++++++--------- .../java/com/shr4pnel/minesweeper/Main.java | 3 ++ .../com/shr4pnel/minesweeper/winmine.png | Bin 0 -> 5013 bytes 3 files changed, 23 insertions(+), 18 deletions(-) create mode 100644 src/main/resources/com/shr4pnel/minesweeper/winmine.png diff --git a/src/main/java/com/shr4pnel/minesweeper/Controller.java b/src/main/java/com/shr4pnel/minesweeper/Controller.java index 3f6b503..7772538 100644 --- a/src/main/java/com/shr4pnel/minesweeper/Controller.java +++ b/src/main/java/com/shr4pnel/minesweeper/Controller.java @@ -63,36 +63,42 @@ public class Controller { return; } Button clicked = (Button) e.getSource(); + ImageView buttonImageView = (ImageView) clicked.getGraphic(); + Image buttonImage = buttonImageView.getImage(); int column = GridPane.getColumnIndex(clicked); int row = GridPane.getRowIndex(clicked); - if (isFirstLoad) { scheduleTimer(); isFirstLoad = false; } - if (e.getButton() == MouseButton.SECONDARY) { flag(clicked); - } else { - handlePrimaryClick(clicked, column, row); + return; } + if (buttonImage.getUrl().contains("flagged.png")) { + return; + } + handlePrimaryClick(clicked, column, row); } private void handlePrimaryClick(Button clicked, int column, int row) { if (wrapper.atColumn(column).atRow(row).isBomb()) { gameOver(clicked); - } else { - int adjacentBombs = wrapper.adjacentBombCount(); - setAdjacentCount(clicked, adjacentBombs); - if (adjacentBombs == 0) { - recursiveExpandTiles(column, row); - } + return; } + int adjacentBombs = wrapper.adjacentBombCount(); + setAdjacentCount(clicked, adjacentBombs); + if (adjacentBombs == 0) { + recursiveExpandTiles(column, row); + } + } private void recursiveExpandTiles(int column, int row) { - if (column < 0 || column >= 30 || row < 0 || row >= 16 || expandedTiles[column][row] && !wrapper.atColumn(column).atRow(row).isBomb()) + if (column < 0 || column >= 30 || row < 0 || row >= 16 || + expandedTiles[column][row] && !wrapper.atColumn(column).atRow(row).isBomb()) { return; + } expandTile(column, row); if (wrapper.atColumn(column).atRow(row).adjacentBombCount() == 0) { recursiveExpandTiles(column, row - 1); @@ -138,6 +144,7 @@ public class Controller { resetGrid(); gridHandler = new Grid(); wrapper = gridHandler.grid; + expandedTiles = new boolean[30][16]; } private void resetTimer() { @@ -170,7 +177,8 @@ public class Controller { Button tileAsButton = (Button) tileClicked; ImageView tileGraphic = (ImageView) tileAsButton.getGraphic(); Image tileGraphicImage = tileGraphic.getImage(); - if (!tileGraphicImage.getUrl().contains("blank.png") && !tileGraphicImage.getUrl().contains("flagged.png")) { + if (!tileGraphicImage.getUrl().contains("blank.png") && + !tileGraphicImage.getUrl().contains("flagged.png")) { return; } boolean flagged = tileGraphicImage.getUrl().contains("flagged.png"); @@ -264,10 +272,4 @@ public class Controller { URL imageURL = getClass().getResource("img/num_" + adjacentBombs + ".png"); button.setGraphic(new ImageView(new Image(String.valueOf(imageURL), 16, 16, true, false))); } - - private int getAdjacentCount(Node tileClicked) { - int column = GridPane.getColumnIndex(tileClicked); - int row = GridPane.getRowIndex(tileClicked); - return wrapper.atColumn(column).atRow(row).adjacentBombCount(); - } } diff --git a/src/main/java/com/shr4pnel/minesweeper/Main.java b/src/main/java/com/shr4pnel/minesweeper/Main.java index cd23f47..2c65e06 100644 --- a/src/main/java/com/shr4pnel/minesweeper/Main.java +++ b/src/main/java/com/shr4pnel/minesweeper/Main.java @@ -5,16 +5,19 @@ import javafx.application.Application; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; +import javafx.scene.image.Image; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage stage) throws IOException { + Image icon = new Image(String.valueOf(getClass().getResource("winmine.png"))); FXMLLoader fxmlLoader = new FXMLLoader(Main.class.getResource("minesweeper.fxml")); Scene scene = new Scene(fxmlLoader.load()); stage.setTitle("Minesweeper"); stage.setScene(scene); stage.setResizable(false); + stage.getIcons().add(icon); stage.show(); } diff --git a/src/main/resources/com/shr4pnel/minesweeper/winmine.png b/src/main/resources/com/shr4pnel/minesweeper/winmine.png new file mode 100644 index 0000000000000000000000000000000000000000..a3604b9a2d24d2cb09988b7661ca210c6aae2ec2 GIT binary patch literal 5013 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