-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
68 lines (59 loc) · 2.18 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import { getRelativeMousePosition } from "./scripts/util";
import { handleClickReveal } from "./scripts/revealer";
import { handleRightClick } from "./scripts/flagger";
import { startTimer, resetTimer } from "./scripts/timer";
import { initializeGrid } from "./scripts/initializeGrid";
import "./style.css";
import { handleFirstClick } from "./scripts/handleFirstClick";
let grid = [],
n = 10,
side = 50;
let firstClicked = false;
window.onload = function () {
const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");
const sizeInput = document.getElementById("sizeOfGrid");
const difficultyInput = document.getElementById("difficulty");
const flagNumberElement = document.getElementById("flagNumber");
const timerElement = document.getElementById("timer");
const gameOverScreen = document.getElementById("gameOverScreen");
const gameWinScreen = document.getElementById("youWinScreen");
const retryButton = document.getElementsByClassName("retryButton");
sizeInput.value = localStorage.getItem("gridSize") || 10;
difficultyInput.value = localStorage.getItem("difficultyLevel") || "easy";
const initialize = () => {
const initialDetails = initializeGrid(
canvas,
context,
sizeInput,
difficultyInput,
flagNumberElement,
timerElement,
resetTimer
);
n = initialDetails.n;
grid = initialDetails.grid;
firstClicked = false;
gameOverScreen.style.display = "none";
gameWinScreen.style.display = "none";
};
sizeInput.addEventListener("change", initialize);
difficultyInput.addEventListener("change", initialize);
retryButton[0].addEventListener("click", initialize);
retryButton[1].addEventListener("click", initialize);
initialize();
canvas.onclick = function (e) {
let mouse = getRelativeMousePosition(e, canvas);
if (!firstClicked) {
firstClicked = true;
startTimer(timerElement);
handleFirstClick(grid, mouse, context, n);
}
handleClickReveal(grid, mouse, context, n);
};
canvas.oncontextmenu = function (e) {
e.preventDefault();
let mouse = getRelativeMousePosition(e, canvas);
handleRightClick(grid, mouse, context, n);
};
};