|
1 | 1 | 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!"; |
33 | 78 | maxText.textContent = maxGuess; |
34 | 79 | scoreText.textContent = score; |
35 | 80 | attemptsText.textContent = attempts; |
36 | 81 | levelText.textContent = level; |
37 | 82 | 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; |
86 | 105 | } |
| 106 | + }; |
87 | 107 | }; |
88 | 108 | game(); |
0 commit comments