flagging fixes
This commit is contained in:
parent
6fc162760d
commit
c3d8b672b1
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
BIN
src/main/resources/com/shr4pnel/minesweeper/winmine.png
Normal file
BIN
src/main/resources/com/shr4pnel/minesweeper/winmine.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.9 KiB |
Loading…
x
Reference in New Issue
Block a user