تمرين إعادة البناء
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);
});اكتب هنا