From c05e148befa3f58c63974bc887de7b036e187eb8 Mon Sep 17 00:00:00 2001 From: lucaslscaixeta Date: Sat, 4 Jul 2026 18:54:17 -0300 Subject: [PATCH 1/7] feat(minesweeper): add restart button structure --- Games/Minesweeper/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/Games/Minesweeper/index.html b/Games/Minesweeper/index.html index 99c3ba4623..fdc717ee8b 100644 --- a/Games/Minesweeper/index.html +++ b/Games/Minesweeper/index.html @@ -18,5 +18,6 @@

Mines: 0


+ \ No newline at end of file From f730171b658a43fca3a98731a48b2771d74d8aec Mon Sep 17 00:00:00 2001 From: lucaslscaixeta Date: Sat, 4 Jul 2026 19:04:42 -0300 Subject: [PATCH 2/7] style(minesweeper): move restart button visibility to stylesheet --- Games/Minesweeper/index.html | 2 +- Games/Minesweeper/styles.css | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Games/Minesweeper/index.html b/Games/Minesweeper/index.html index fdc717ee8b..2c78dabbf9 100644 --- a/Games/Minesweeper/index.html +++ b/Games/Minesweeper/index.html @@ -18,6 +18,6 @@

Mines: 0


- + \ No newline at end of file diff --git a/Games/Minesweeper/styles.css b/Games/Minesweeper/styles.css index 304bb8432b..f3f3a624e7 100644 --- a/Games/Minesweeper/styles.css +++ b/Games/Minesweeper/styles.css @@ -94,4 +94,8 @@ h1{ top: 90%; left: 53%; transform: translate(-90%, -53%); +} + +#restart-button { + display: none; } \ No newline at end of file From 870aa659d5a4df6e9ad3cf66e51486b1679921d2 Mon Sep 17 00:00:00 2001 From: lucaslscaixeta Date: Sat, 4 Jul 2026 19:42:34 -0300 Subject: [PATCH 3/7] feat(minesweeper): add game reset functionality --- Games/Minesweeper/script.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Games/Minesweeper/script.js b/Games/Minesweeper/script.js index 2f3654b3c8..438bde2ec8 100644 --- a/Games/Minesweeper/script.js +++ b/Games/Minesweeper/script.js @@ -161,4 +161,12 @@ function checkTile(r, c) { return 1; } return 0; +} + +function resetGame() { + board = []; + minesLocation = []; + tilesClicked = 0; + flagEnabled = false; + gameOver = false; } \ No newline at end of file From 922e6ca3408588cf30c82913e4d091d7a8b2358d Mon Sep 17 00:00:00 2001 From: lucaslscaixeta Date: Sat, 4 Jul 2026 20:06:09 -0300 Subject: [PATCH 4/7] refactor(minesweeper): extract board initialization logic --- Games/Minesweeper/script.js | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/Games/Minesweeper/script.js b/Games/Minesweeper/script.js index 438bde2ec8..d84f65e359 100644 --- a/Games/Minesweeper/script.js +++ b/Games/Minesweeper/script.js @@ -29,19 +29,25 @@ function setMines() { function startGame() { document.getElementById("mines-count").innerText = minesCount; document.getElementById("flag-button").addEventListener("click", setFlag); + + initializeBoard(); +} + +function initializeBoard() { + setMines(); -for (let r = 0; r < rows; r++) { - let row = []; - for (let c = 0; c < columns; c++) { - let tile = document.createElement("div"); - tile.id = r.toString() + "-" + c.toString(); - tile.addEventListener("click", clickTile); - document.getElementById("board").append(tile); - row.push(tile); - } - board.push(row); - } + for (let r = 0; r < rows; r++) { + let row = []; + for (let c = 0; c < columns; c++) { + let tile = document.createElement("div"); + tile.id = r.toString() + "-" + c.toString(); + tile.addEventListener("click", clickTile); + document.getElementById("board").append(tile); + row.push(tile); + } + board.push(row); + } } function setFlag() { From c74197e1ad27dedf6df970250a977bd9d3f7848c Mon Sep 17 00:00:00 2001 From: lucaslscaixeta Date: Sun, 5 Jul 2026 12:52:49 -0300 Subject: [PATCH 5/7] style(minesweeper): improve layout of flag and restart buttons --- Games/Minesweeper/styles.css | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Games/Minesweeper/styles.css b/Games/Minesweeper/styles.css index f3f3a624e7..f98a2476b3 100644 --- a/Games/Minesweeper/styles.css +++ b/Games/Minesweeper/styles.css @@ -93,9 +93,19 @@ h1{ position: absolute; top: 90%; left: 53%; - transform: translate(-90%, -53%); + transform: translate(-150%, -53%); } #restart-button { - display: none; + width: 100px; + height: 50px; + font-size: 25px; + background-color: lightgray; + color: rgb(201, 3, 3); + border: none; + border-radius: 10px; + position: absolute; + top: 90%; + left: 51%; + transform: translate(20px, -50%); } \ No newline at end of file From e5b72ab1423a8e97d61c78fd25355f8e2beb7840 Mon Sep 17 00:00:00 2001 From: lucaslscaixeta Date: Sun, 5 Jul 2026 17:59:49 -0300 Subject: [PATCH 6/7] feat(minesweeper): add reset game logic --- Games/Minesweeper/script.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Games/Minesweeper/script.js b/Games/Minesweeper/script.js index d84f65e359..9e40e6f2f4 100644 --- a/Games/Minesweeper/script.js +++ b/Games/Minesweeper/script.js @@ -29,6 +29,7 @@ function setMines() { function startGame() { document.getElementById("mines-count").innerText = minesCount; document.getElementById("flag-button").addEventListener("click", setFlag); + document.getElementById("restart-button").addEventListener("click", resetGame); initializeBoard(); } @@ -175,4 +176,10 @@ function resetGame() { tilesClicked = 0; flagEnabled = false; gameOver = false; + + document.getElementById("board").innerHTML = ""; + document.getElementById("flag-button").style.backgroundColor = "lightgray"; + document.getElementById("mines-count").innerText = minesCount; + + startGame(); } \ No newline at end of file From 7d9b425bd50c7eeb0e78ca05fbe2f1d3eaed6c30 Mon Sep 17 00:00:00 2001 From: lucaslscaixeta Date: Tue, 7 Jul 2026 01:36:16 -0300 Subject: [PATCH 7/7] feat(minesweeper): customize restart button for win and loss states --- Games/Minesweeper/script.js | 9 +++++++++ Games/Minesweeper/styles.css | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Games/Minesweeper/script.js b/Games/Minesweeper/script.js index 9e40e6f2f4..4ef6908c50 100644 --- a/Games/Minesweeper/script.js +++ b/Games/Minesweeper/script.js @@ -103,6 +103,10 @@ function revealMines() { } } } + + const restartButton = document.getElementById("restart-button"); + restartButton.innerText = "Restart"; + restartButton.style.display = "block"; } function checkMine(r, c) { @@ -155,6 +159,10 @@ function checkMine(r, c) { if (tilesClicked == rows * columns - minesCount) { document.getElementById("mines-count").innerText = "Cleared"; gameOver = true; + + const restartButton = document.getElementById("restart-button"); + restartButton.innerText = "AGAIN"; + restartButton.style.display = "block"; } } @@ -180,6 +188,7 @@ function resetGame() { document.getElementById("board").innerHTML = ""; document.getElementById("flag-button").style.backgroundColor = "lightgray"; document.getElementById("mines-count").innerText = minesCount; + document.getElementById("restart-button").style.display = "none"; startGame(); } \ No newline at end of file diff --git a/Games/Minesweeper/styles.css b/Games/Minesweeper/styles.css index f98a2476b3..81e7bc6f9d 100644 --- a/Games/Minesweeper/styles.css +++ b/Games/Minesweeper/styles.css @@ -101,7 +101,7 @@ h1{ height: 50px; font-size: 25px; background-color: lightgray; - color: rgb(201, 3, 3); + color: rgb(0, 0, 0); border: none; border-radius: 10px; position: absolute;