From acaa18ffcc8e755fc50b530638b4f4f99bbc9b86 Mon Sep 17 00:00:00 2001 From: observer Date: Thu, 30 Jan 2025 22:09:02 +0000 Subject: [PATCH] Implement chording --- .../com/shr4pnel/minesweeper/Controller.java | 95 +++++++++++++++---- 1 file changed, 79 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/shr4pnel/minesweeper/Controller.java b/src/main/java/com/shr4pnel/minesweeper/Controller.java index 613f9a9..56013c4 100644 --- a/src/main/java/com/shr4pnel/minesweeper/Controller.java +++ b/src/main/java/com/shr4pnel/minesweeper/Controller.java @@ -2,6 +2,7 @@ package com.shr4pnel.minesweeper; import java.io.IOException; import java.net.URL; +import java.util.ArrayList; import java.util.Timer; import java.util.TimerTask; @@ -236,25 +237,70 @@ public class Controller { if (buttonImage.getUrl().contains("flagged.png")) { return; } -// if (buttonImage.getUrl().contains("num") && !buttonImage.getUrl().contains("num_0.png")) { -// chord(clicked, buttonImage.getUrl()); -// return; -// } + if (buttonImage.getUrl().contains("num") && !buttonImage.getUrl().contains("num_0.png")) { + chord(clicked, buttonImage.getUrl()); + return; + } handlePrimaryClick(clicked, column, row); } -// private void chord(Button clicked, String clickedURL) { -// int column = GridPane.getColumnIndex(clicked); -// int row = GridPane.getRowIndex(clicked); -// int urlLength = clickedURL.length(); -// char expectedAdjacentChar = clickedURL.charAt(urlLength-5); -// int expectedAdjacent = Integer.parseInt(Character.toString(expectedAdjacentChar)); -// int actualAdjacent = wrapper.atColumn(column).atRow(row).adjacentBombCount(); -// if (expectedAdjacent != actualAdjacent) { -// return; -// } -// // chord logic -// } + private int adjacentFlagCount(int column, int row) { + int flagCount = 0; + for (int innerColumn = column - 1; innerColumn <= column + 1; innerColumn++) { + for (int innerRow = row - 1; innerRow <= row + 1; innerRow++) { + if (innerColumn == column && innerRow == row) + continue; + + if (!wrapper.atColumn(innerColumn).atRow(innerRow).isValid()) { + continue; + } + + Button b = (Button) getNodeByColumnRowIndex(innerColumn, innerRow); + String bURL = getButtonURL(b); + if (bURL.contains("flag")) { + flagCount++; + } + } + } + return flagCount; + } + + private Button[] chordTilesToOpen(int column, int row) { + ArrayList