Add examples

This commit is contained in:
Steve Kinney
2024-09-24 15:56:02 -06:00
parent 410a6c72ff
commit 61485cc73c
8 changed files with 150 additions and 24 deletions

View File

@@ -0,0 +1,33 @@
export class Game {
/**
* A number guessing game.
* @param {number} minimum - The minimum number to guess.
* @param {number} maximum - The maximum number to guess.
*/
constructor(minimum, maximum) {
this.secretNumber = Math.ceil(Math.random() * maximum - minimum) + minimum;
this.guesses = new Set();
console.log(`Guess the number between ${minimum} and ${maximum}.`);
}
/**
* Make a guess for the secret number.
* @param {number} number - The number to guess.
*/
guess(number) {
if (this.guesses.has(number)) {
return 'You already guessed that number!';
}
this.guesses.add(number);
if (number < this.secretNumber) {
return 'Too low!';
} else if (number > this.secretNumber) {
return 'Too high!';
} else if (number === this.secretNumber) {
return `Correct! You guessed the number in ${this.guesses.size} attempts.`;
}
}
}

View File

@@ -1,38 +1,34 @@
// Import the readline module to handle user input
import { Game } from './game.js';
import chalk from 'chalk';
import { createInterface } from 'readline';
// Create an interface for reading from stdin (standard input)
const rl = createInterface({
input: process.stdin,
output: process.stdout,
});
// Generate a random number between 1 and 100
const randomNumber = Math.floor(Math.random() * 100) + 1;
let attempts = 0;
let game = new Game(1, 100);
// Function to handle user's guess
function askQuestion() {
rl.question('Guess the number (between 1 and 100): ', (answer) => {
function startGame() {
rl.question(`Guess ${chalk.cyanBright('→')} `, (answer) => {
const guess = parseInt(answer, 10);
attempts++;
// Check if the user's guess is correct
if (isNaN(guess)) {
console.log('Please enter a valid number.');
askQuestion(); // Ask again if input is invalid
} else if (guess < randomNumber) {
console.log('Too low!');
askQuestion(); // Ask again
} else if (guess > randomNumber) {
console.log('Too high!');
askQuestion(); // Ask again
console.log(chalk.red('Please enter a valid number.'));
startGame();
}
const result = game.guess(guess);
console.log(result);
if (result.startsWith('Correct')) {
rl.close();
} else {
console.log(`Correct! You guessed the number in ${attempts} attempts.`);
rl.close(); // End the game
startGame();
}
});
}
// Start the game by asking the first question
askQuestion();
startGame();

View File

@@ -21,5 +21,8 @@
"@vitest/ui": "^2.1.1",
"vite": "^5.4.5",
"vitest": "^2.1.1"
},
"dependencies": {
"chalk": "^5.3.0"
}
}