flagging fixes

This commit is contained in:
tyler :3 2024-05-17 19:11:59 +01:00
parent 6fc162760d
commit c3d8b672b1
3 changed files with 23 additions and 18 deletions

View File

@ -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();
}
}

View File

@ -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();
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB