simplify ui

This commit is contained in:
Vaclav Tvrdik
2024-07-11 15:05:52 +02:00
parent da7f36539f
commit 1c4fa127a7
3 changed files with 106 additions and 69 deletions

51
ms.css
View File

@@ -16,6 +16,57 @@ body, html
display: flex;
}
.status_row
{
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
background-color: #EEE;
}
.mine_count {
width: 35px;
height: 25px;
border: 1px solid #CCC;
padding: 10px 5px 5px 5px;
background-color: #EEE;
color: black;
font-weight: bold;
font-size: 24px;
text-align: center;
}
.timer {
width: 35px;
height: 25px;
border: 1px solid #CCC;
padding: 10px 5px 5px 5px;
background-color: #EEE;
color: red;
font-weight: bold;
font-size: 24px;
text-align: center;
}
.moves_made {
width: 35px;
height: 25px;
border: 1px solid #CCC;
padding: 10px 5px 5px 5px;
background-color: #EEE;
color: blue;
font-weight: bold;
font-size: 24px;
text-align: center;
}
.cell {
width: 35px;
height: 25px;

55
ms.html
View File

@@ -1,39 +1,28 @@
<!DOCTYPE html>
<html lang='en' class=''>
<head>
<meta charset='UTF-8'>
<title>Minesweeper</title>
<head>
<meta charset='UTF-8'>
<title>Minesweeper</title>
<link rel="stylesheet" href="ms.css">
<script src="ms.js"></script>
<script src="https://use.fontawesome.com/e51c6dea6f.js"></script>
</head>
<link rel="stylesheet" href="ms.css">
<script src="ms.js"></script>
<body>
<div class="status_msg">
<strong>Game Status:</strong> <span id="game_status"></span>
</div>
<script src="https://use.fontawesome.com/e51c6dea6f.js"></script>
<div class="clearfix">
<div id="game_container">
<!--placeholder for game -->
</div>
</div>
</head>
<div class="clearfix">
<div id="game_container">
<!--placeholder for game -->
</div>
</div>
<div>
<div class="status_msg">
<strong>Mines Remaining:</strong> <span id="mine_count"></span>
</div>
<div class="status_msg">
<strong>Moves Made:</strong> <span id="moves_made"></span>
</div>
<div class="status_msg">
<strong>Game Status:</strong> <span id="game_status"></span>
</div>
<div style="margin: 10px 0px;">
<input id="validate_button" type="button" value="Did I win?" />
</div>
<div style="margin: 15px 0px;">
<input id="new_game_button" type="button" value="Create new game!" />
</div>
</div>
<div style="margin: 10px 0px;">
<input id="validate_button" type="button" value="Did I win?" />
<input id="new_game_button" type="button" value="Create new game!" />
</div>
</body>
</html>

69
ms.js
View File

@@ -35,40 +35,6 @@ class Minesweeper {
{ options: opts },
loadedData);
//validate options
let rows = this.options["rows"];
if (isNaN(rows)) {
this.options["rows"] = 8;
} else if (rows < 3) {
this.options["rows"] = 3;
} else if (rows > 19) {
this.options["rows"] = 19;
}
let cols = this.options["cols"];
if (isNaN(cols)) {
this.options["cols"] = 8;
} else if (cols < 3) {
this.options["cols"] = 3;
} else if (cols > 19) {
this.options["cols"] = 19;
}
if (isNaN(this.options["mines"])) {
this.options["mines"] = 10;
}
if (this.options["mines"] < 0) {
this.options["mines"] = 1;
} else if (
this.options["mines"] >
this.options["rows"] * this.options["cols"])
{
this.options["mines"] = this.options["rows"] * this.options["cols"];
}
if (this.loadGame) {
this.load();
} else {
@@ -140,6 +106,15 @@ class Minesweeper {
gameContainer.innerHTML = "";
let content = "";
//create status bar
content += '<div class="status_row">';
content += `<div class="mine_count" id="mine_count" title="Mine count">10</div>`;
content += `<div class="moves_made" id="moves_made" title="Moves made">0</div>`;
content += `<div class="timer" id="timer" title="Time remaining">0</div>`;
content += "</div>";
//create cells
for (let r = 0; r < this.options.rows; r++) {
content += '<div class="row">';
for (let c = 0; c < this.options.cols; c++) {
@@ -261,7 +236,7 @@ class Minesweeper {
this.save();
}
//debgugging function to print the grid to console
//debugging function to print the grid to console
gridToString() {
let result = "";
for (let r = 0, r_len = this.grid.length; r < r_len; r++) {
@@ -314,9 +289,31 @@ class Cell {
//create a new game
function newGame(opts = {}) {
game = new Minesweeper(opts);
startTimer()
console.log(game.gridToString());
}
function startTimer() {
clearInterval(countdown);
document.getElementById('timer').textContent = 70;
countdown = setInterval(updateTimer, 1000);
}
function updateTimer() {
const timerDisplay = document.getElementById('timer');
const currentTime = parseInt(timerDisplay.textContent, 10);
if (currentTime > 0) {
timerDisplay.textContent = currentTime - 1;
// Call your function here every second
} else {
clearInterval(countdown);
alert('Time run out!');
}
}
window.onload = function () {
//attack click to new game button
document.
@@ -389,8 +386,8 @@ window.onload = function () {
};
//global vars
var game;
var countdown
//check support for local storage: credit - http://diveintohtml5.info/storage.html
const hasLocalStorage = function () {