AzLearn

تمرين إعادة البناء

Number Guessing Game

أعد كتابة لعبة تخمين رقم تفاعلية بسيطة في TypeScript.

typescript ~14 دقيقة مبتدئ
أعد بناء الكود Rebuild

هذا هو الكود. اكتبه بنفسك.

الكود المرجعي
// Run with: npx tsx 05-number-guessing-game.ts (requires @types/node).
import * as readline from "node:readline";

type GuessResult = "low" | "high" | "correct";

function checkGuess(guess: number, secret: number): GuessResult {
  if (guess < secret) {
    return "low";
  }
  if (guess > secret) {
    return "high";
  }
  return "correct";
}

async function ask(question: string): Promise<string> {
  const reader = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
  });

  return new Promise((resolve) => {
    reader.question(question, (answer: string) => {
      reader.close();
      resolve(answer);
    });
  });
}

async function main(): Promise<void> {
  const secret = Math.floor(Math.random() * 10) + 1;
  const answer = await ask("Guess a number from 1 to 10: ");
  const guess = Number(answer);

  if (!Number.isInteger(guess)) {
    console.log("Please enter a whole number.");
    return;
  }

  const result = checkGuess(guess, secret);
  console.log(result === "correct" ? "Correct!" : `Too ${result}. Secret was ${secret}.`);
}

main().catch((error: Error) => {
  console.error(error.message);
  process.exit(1);
});
اكتب هنا