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;
}