AzLearn

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

Number Guessing Game

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

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

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

الكود المرجعي
declare const process: {
  stdin: unknown;
  stdout: unknown;
  exit(code?: number): never;
};
type ReadlineInterface = {
  question(prompt: string, callback: (answer: string) => void): void;
  close(): void;
};

type ReadlineModule = {
  createInterface(options: { input: unknown; output: unknown }): ReadlineInterface;
};

declare function require(name: "readline"): ReadlineModule;

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

const readline = require("readline");

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);
});
اكتب هنا