-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
125 lines (102 loc) · 3.21 KB
/
script.js
File metadata and controls
125 lines (102 loc) · 3.21 KB
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
//Variables
const headerStreak = document.getElementById("header-streak");
const headerBest = document.getElementById("header-best");
const gameTask = document.getElementById("game-task");
const gameInput = document.getElementById("game-input");
const incorrect = document.getElementById("incorrect");
const overlay = document.getElementById("overlay");
const incorrectCorrection = document.getElementById("incorrect-correction");
const incorrectStreak = document.getElementById("incorrect-streak");
const incorrectGuess = document.getElementById("incorrect-guess");
let streak = Number(localStorage.getItem("streak")) || 0;
let best = Number(localStorage.getItem("best")) || 0;
let task;
let operator;
let result;
//Code
headerStreak.textContent = "Streak: " + streak;
headerBest.textContent = "Best: " + best;
const saved = localStorage.getItem("currentTask");
if (saved) {
const t = JSON.parse(saved)
operator = t.op
task = t.a + " " + t.op + " " + t.b
result = t.res
gameTask.textContent = task
resetUI()
} else {
resetUI()
generateTask()
}
function resetUI() {
incorrect.classList.remove("show");
overlay.classList.remove("show");
gameInput.focus();
}
function generateTask() {
resetUI();
let randomIndex;
let a = Math.floor(Math.random() * 100);
let b = Math.floor(Math.random() * 100);
let operators = ["+", "-", "*"];
if(streak < 10) {
operator = operators[0];
} else if(streak < 20) {
randomIndex = Math.floor(Math.random() * 2);
operator = operators[randomIndex];
} else {
randomIndex = Math.floor(Math.random() * 3);
operator = operators[randomIndex];
}
if(operator === "+") {
result = a + b;
}
if (operator === "-") {
result = a - b;
}
if(operator === "*") {
a = Math.floor(Math.random() * 12);
b = Math.floor(Math.random() * 12);
result = a * b;
}
task = a + " " + operator + " " + b;
saveTask(a, b, operator, result)
gameTask.textContent = task;
}
function saveTask(a, b, op, res) {
localStorage.setItem("currentTask", JSON.stringify({ a, b, op, res }))
}
gameInput.addEventListener("keydown", (e) => {
if(e.key === "Enter") {
tryGuess();
}
});
function tryGuess() {
let guess = Number(gameInput.value);
if(gameInput.value === "") {
return;
}
gameInput.value = "";
if(guess === result) {
streak++;
localStorage.setItem("streak", streak);
headerStreak.textContent = "Streak: " + streak;
generateTask();
if(streak > best) {
best = streak;
localStorage.setItem("best", best);
headerBest.textContent = "Best: " + best;
}
} else {
incorrect.classList.add("show");
overlay.classList.add("show");
incorrectCorrection.textContent = "Correct answer: " + result;
incorrectGuess.textContent = "Your answer: " + guess;
incorrectStreak.textContent = "Streak: " + streak;
streak = 0;
localStorage.setItem("streak", streak);
localStorage.removeItem("currentTask");
headerStreak.textContent = "Streak: " + streak;
gameInput.focus();
}
}