Skip to content

Commit ad60625

Browse files
committed
Update scoring formula
1 parent 049f9e4 commit ad60625

File tree

1 file changed

+99
-79
lines changed

1 file changed

+99
-79
lines changed

app.js

Lines changed: 99 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,88 +1,108 @@
11
const game = () => {
2-
let level = 1;//set initial level to 1
3-
let attempts = 0;//set attempts to 0
4-
let score = 0;//set score to 0
5-
let levelScore = 0;//set level score to 0
6-
let maxAttempts = Math.round(level * 0.5);//set max attempts based on level and difficulty
7-
let guess = 0;//set initial guess value to 0
8-
let maxGuess = 2 ** level;//set max guess value to 2 raised to level
9-
let secret = randomInt(1, maxGuess);//set secret value to random integer between 1 and max guess value
10-
const maxText = document.getElementById("max");//max guess value text
11-
const scoreText = document.getElementById("score");//score text
12-
const attemptsText = document.getElementById("attempts");//attempts text
13-
const levelText = document.getElementById("level");//level text
14-
const guessText = document.getElementById("guess");//guess value text
15-
const startButton = document.getElementById("start-button");//start button
16-
const guessButton = document.getElementById("guess-button");//guess button
17-
const feedbackText = document.getElementById("feedback");//feedback text
18-
startButton.addEventListener("click", startGame);//start game when start button is clicked
19-
guessButton.addEventListener("click", checkGuess);//check guess when guess button is clicked
20-
const randomInt = (minimum, maximum) => {//get random integer
21-
return Math.floor(Math.random() * (maximum - minimum + 1)) + minimum;
22-
};
23-
const startGame = () => {//start game
24-
level = 1;//set initial level to 1
25-
attempts = 0;//set attempts to 0
26-
score = 0;//set score to 0
27-
levelScore = 0;//set level score to 0
28-
maxAttempts = Math.round(level * 0.5);//set max attempts based on level and difficulty
29-
guess = 0;//set initial guess value to 0
30-
maxGuess = 2 ** level;//set max guess value to 2 raised to level
31-
secret = randomInt(1, maxGuess);//set secret value to random integer between 1 and max guess value
32-
feedbackText.textContent = "";
2+
let level = 1; //set initial level to 1
3+
let attempts = 0; //set attempts to 0
4+
let score = 0; //set score to 0
5+
let levelScore = 0; //set level score to 0
6+
let maxAttempts = Math.round(level * 0.5); //set max attempts based on level and difficulty
7+
let guess = 0; //set initial guess value to 0
8+
let maxGuess = 2 ** level; //set max guess value to 2 raised to level
9+
let secret = randomInt(1, maxGuess); //set secret value to random integer between 1 and max guess value
10+
const maxText = document.getElementById("max"); //max guess value text
11+
const scoreText = document.getElementById("score"); //score text
12+
const attemptsText = document.getElementById("attempts"); //attempts text
13+
const levelText = document.getElementById("level"); //level text
14+
const guessText = document.getElementById("guess"); //guess value text
15+
const startButton = document.getElementById("start-button"); //start button
16+
const guessButton = document.getElementById("guess-button"); //guess button
17+
const feedbackText = document.getElementById("feedback"); //feedback text
18+
startButton.addEventListener("click", startGame); //start game when start button is clicked
19+
guessButton.addEventListener("click", checkGuess); //check guess when guess button is clicked
20+
const randomInt = (minimum, maximum) => {
21+
//get random integer
22+
return Math.floor(Math.random() * (maximum - minimum + 1)) + minimum;
23+
};
24+
const startGame = () => {
25+
//start game
26+
level = 1; //set initial level to 1
27+
attempts = 0; //set attempts to 0
28+
score = 0; //set score to 0
29+
levelScore = 0; //set level score to 0
30+
maxAttempts = Math.round(level * 0.5); //set max attempts based on level and difficulty
31+
guess = 0; //set initial guess value to 0
32+
maxGuess = 2 ** level; //set max guess value to 2 raised to level
33+
secret = randomInt(1, maxGuess); //set secret value to random integer between 1 and max guess value
34+
feedbackText.textContent = "";
35+
maxText.textContent = maxGuess;
36+
scoreText.textContent = score;
37+
attemptsText.textContent = attempts;
38+
levelText.textContent = level;
39+
guessText.max = maxGuess;
40+
guessText.value = guess;
41+
startButton.disabled = true; //disable start button
42+
guessButton.disabled = false; //enable guess button
43+
};
44+
const checkGuess = () => {
45+
//check guess
46+
guess = parseInt(guessText.value, 10); //get guess value from input
47+
if (guess !== secret) {
48+
//check if guess is equal to secret number
49+
if (guess > secret) {
50+
//too high
51+
feedbackText.textContent = "Too high!";
52+
} else {
53+
//too low
54+
feedbackText.textContent = "Too low!";
55+
}
56+
levelScore +=
57+
maxGuess *
58+
Math.min(
59+
Math.max(guess, 1) / Math.max(secret, 1),
60+
Math.max(secret, 1) / Math.max(guess, 1),
61+
) *
62+
(guess < secret
63+
? 1 - (guess - secret) / guess
64+
: 1 - (secret - guess) / secret); //increase level score
65+
attempts++;
66+
if (attempts >= maxAttempts) {
67+
//if all attempts used reset game to initial state
68+
feedbackText.textContent = "Game over! Your score is " + score + ".";
69+
level = 1;
70+
attempts = 0;
71+
score = 0;
72+
levelScore = 0; //set level score to 0
73+
maxAttempts = Math.round(level * 0.5);
74+
guess = 0;
75+
maxGuess = 2 ** level;
76+
secret = randomInt(1, maxGuess);
77+
feedbackText.textContent = "Game over!";
3378
maxText.textContent = maxGuess;
3479
scoreText.textContent = score;
3580
attemptsText.textContent = attempts;
3681
levelText.textContent = level;
3782
guessText.max = maxGuess;
38-
guessText.value = guess;
39-
startButton.disabled = true;//disable start button
40-
guessButton.disabled = false;//enable guess button
41-
};
42-
const checkGuess = () => {//check guess
43-
guess = parseInt(guessText.value, 10);//get guess value from input
44-
if (guess !== secret) {//check if guess is equal to secret number
45-
if (guess > secret) {//too high
46-
feedbackText.textContent = "Too high!";
47-
} else {//too low
48-
feedbackText.textContent = "Too low!";
49-
}
50-
levelScore += maxGuess * Math.min(Math.max(guess, 1) / Math.max(secret, 1), Math.max(secret, 1) / Math.max(guess, 1));//increase level score
51-
attempts++;
52-
if (attempts >= maxAttempts) {//if all attempts used reset game to initial state
53-
feedbackText.textContent = "Game over! Your score is " + score + ".";
54-
level = 1;
55-
attempts = 0;
56-
score = 0;
57-
levelScore = 0;//set level score to 0
58-
maxAttempts = Math.round(level * 0.5);
59-
guess = 0;
60-
maxGuess = 2 ** level;
61-
secret = randomInt(1, maxGuess);
62-
feedbackText.textContent = "Game over!";
63-
maxText.textContent = maxGuess;
64-
scoreText.textContent = score;
65-
attemptsText.textContent = attempts;
66-
levelText.textContent = level;
67-
guessText.max = maxGuess;
68-
startButton.disabled = false;//enable start button
69-
guessButton.disabled = true;//disable guess button
70-
}
71-
} else {//if guess is equal to secret number
72-
feedbackText.textContent = "You guessed correctly! +" + levelScore + " points!";
73-
score += Math.round(((levelScore * (maxAttempts - attempts + 1)) / (attempts + 1)) * maxAttempts);//increase score by level score
74-
level++;//increase level by 1
75-
levelScore = 0;//set level score to 0
76-
attempts = 0;//set attempts to 0
77-
maxAttempts = Math.round(level * 0.5);//increase max attempts by 0.5
78-
maxGuess = 2 ** level;//increase max guess number by double
79-
secret = randomInt(1, maxGuess);//get random secret guess number
80-
maxText.textContent = maxGuess;
81-
scoreText.textContent = score;
82-
attemptsText.textContent = attempts;
83-
levelText.textContent = level;
84-
guessText.max = maxGuess;
85-
}
83+
startButton.disabled = false; //enable start button
84+
guessButton.disabled = true; //disable guess button
85+
}
86+
} else {
87+
//if guess is equal to secret number
88+
feedbackText.textContent =
89+
"You guessed correctly! +" + levelScore + " points!";
90+
score += Math.round(
91+
((levelScore * (maxAttempts - attempts + 1)) / (attempts + 1)) *
92+
maxAttempts,
93+
); //increase score by level score
94+
level++; //increase level by 1
95+
levelScore = 0; //set level score to 0
96+
attempts = 0; //set attempts to 0
97+
maxAttempts = Math.round(level * 0.5); //increase max attempts by 0.5
98+
maxGuess = 2 ** level; //increase max guess number by double
99+
secret = randomInt(1, maxGuess); //get random secret guess number
100+
maxText.textContent = maxGuess;
101+
scoreText.textContent = score;
102+
attemptsText.textContent = attempts;
103+
levelText.textContent = level;
104+
guessText.max = maxGuess;
86105
}
106+
};
87107
};
88108
game();

0 commit comments

Comments
 (0)