Minimal guessing game
tososdk
elcahivo at gmail.com
Wed Dec 27 15:54:49 UTC 2023
Any suggestions you can give for this code?:
```
import std.conv : to, ConvException;
import std.string : strip;
import std.stdio : writeln, write, readln;
import std.random : uniform;
enum GiveUpCode = 500;
int generateNumber() {
return uniform(1, 100);
}
void printMessage(string message) {
writeln(message);
}
void gameStart() {
int number = generateNumber();
int tries = 0;
int guess;
do {
write("Guess a number between 1 and 100: ");
try {
guess = readln().strip().to!int;
if (guess == GiveUpCode) {
printMessage("You gave up! The number was: " ~
to!string(number) ~ ". " ~ (tries == 0 ? "Don't give up that
easy!" : "But nice try, you can try again if you like!"));
return;
}
if (guess < 1 || guess > 100) {
printMessage("Please enter a number between 1 and
100 or enter '" ~ to!string(GiveUpCode) ~ "' to exit the game.
Try again, please.");
continue;
}
} catch (ConvException e) {
printMessage("Do not enter letters, signs, no blank
spaces, or something else that isn't a number! Try again!");
continue;
}
tries++;
if (guess < number) {
printMessage("Too low. Try again.");
} else if (guess > number) {
printMessage("Too high. Try again.");
} else {
printMessage("Congratulations! You guessed the number
correctly in " ~ to!string(tries) ~ (tries == 1 ? " attempt!" : "
tries!"));
}
} while (guess != number);
printMessage("Thanks for playing!");
}
int main() {
printMessage("Welcome to the number guessing game! If you
guess the number correctly, you win!.\nIf you can't guess the
number, you can enter '" ~ to!string(GiveUpCode) ~ "' to exit the
game.");
gameStart();
return 0;
}
More information about the Digitalmars-d
mailing list