-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
117 lines (102 loc) · 3.15 KB
/
script.js
File metadata and controls
117 lines (102 loc) · 3.15 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
let limit;
let maxTries;
let remainingTries;
let targetNumber;
let lowerBound = 0;
let upperBound;
function updateLimit() {
limit = parseInt(document.getElementById("limit").value);
upperBound = limit;
resetGame(); // Reset the game when the limit is changed
targetNumber = generateRandomNumber(limit);
}
function updateTries() {
maxTries = parseInt(document.getElementById("tries").value);
remainingTries = maxTries;
const triesLeftElement = document.getElementById("triesLeft");
if (triesLeftElement) {
triesLeftElement.innerHTML = remainingTries;
}
resetGame(); // Reset the game when the max tries is changed
}
function generateRandomNumber(limit) {
return Math.floor(Math.random() * limit) + 1;
}
function makeGuess() {
const guess = parseInt(document.getElementById("guessInput").value);
if (isNaN(guess)) {
alert("Please enter a valid number.");
return;
}
if (remainingTries <= 0) {
alert("Game Over! No tries left. Please reset the game.");
return;
}
if (guess === targetNumber) {
document.getElementById(
"status"
).innerHTML = `✅ Correct! 🎉 The number was ${targetNumber}.`;
remainingTries = 0;
} else {
remainingTries--;
if (guess < targetNumber) {
lowerBound = Math.max(lowerBound, guess);
} else {
upperBound = Math.min(upperBound, guess);
}
document.getElementById(
"rangeDisplay"
).innerHTML = `Guess a number between ${lowerBound} and ${upperBound}`;
document.getElementById(
"status"
).innerHTML = `Wrong! ❌ Remaining tries: ${remainingTries}`;
if (remainingTries <= 0) {
alert("Game Over! You've used all your tries.");
document.getElementById("status").innerHTML =
"Game Over! Click reset to play again.";
}
}
}
function showHelp() {
alert(
"Guess my chosen number within the limit. Each incorrect guess will shrink the range. If you use up all your tries or the limit becomes too narrow, the game is over."
);
}
function resetGame() {
lowerBound = 0;
document.getElementById("guessInput").value = "";
document.getElementById("status").innerHTML = `Max ${maxTries} tries`;
document.getElementById(
"rangeDisplay"
).innerHTML = `Guess a number between ${lowerBound} and ${upperBound}`;
remainingTries = maxTries;
const triesLeftElement = document.getElementById("triesLeft");
if (triesLeftElement) {
triesLeftElement.innerHTML = remainingTries;
}
}
function addToDisplay(val) {
let dis = document.getElementById("guessInput");
// Ensure the current value is only updated if it's not already the same
if (dis.value !== undefined && dis.value !== null) {
dis.value += val;
}
}
function Back() {
let ev = document.getElementById("guessInput");
ev.value = ev.value.slice(0, -1);
}
// Event listener for keydown to handle number input
document.addEventListener("keydown", (event) => {
const validKeys = "0123456789";
if (validKeys.includes(event.key)) {
addToDisplay(event.key);
} else if (event.key === "Backspace") {
Back();
} else if (event.key === "Enter") {
makeGuess();
}
});
// Initialize the game with default values
updateLimit();
updateTries();