404 - o((âīšâ))o
I really looked hard but I couldn't find the page you are looking for.
Go back to safety
Play a Number Guessing Game
Since you are here, why not play a number guessing game?
@if (!isGameStarted)
{
Select a difficulty level to start:
}
else
{
I'm thinking of a number between 1 and @maxNumber. Can you guess it?
You have @remainingGuesses guesses left.
Total guesses: @guessCount
@if (!string.IsNullOrEmpty(message))
{
@message
@if (gameDone)
{
}
}
}
@code {
private int targetNumber;
private int userGuess;
private int guessCount;
private int maxNumber;
private int maxGuesses;
private int remainingGuesses;
private string message = string.Empty;
private string alertClass = "";
private bool gameDone = false;
private bool isGameStarted = false;
private enum DifficultyLevel
{
Easy,
Medium,
Hard
}
private void StartGame(DifficultyLevel difficulty)
{
isGameStarted = true;
gameDone = false;
guessCount = 0;
message = string.Empty;
userGuess = 0;
switch (difficulty)
{
case DifficultyLevel.Easy:
maxNumber = 10;
maxGuesses = 3;
break;
case DifficultyLevel.Medium:
maxNumber = 100;
maxGuesses = 7;
break;
case DifficultyLevel.Hard:
maxNumber = 1000;
maxGuesses = 10;
break;
default:
throw new ArgumentOutOfRangeException(nameof(difficulty), difficulty, null);
}
remainingGuesses = maxGuesses;
targetNumber = RandomNumberGenerator.GetInt32(1, maxNumber + 1);
}
private void CheckGuess()
{
if (gameDone || !isGameStarted)
return;
if (userGuess < 1 || userGuess > maxNumber)
{
message = $"Please enter a number between 1 and {maxNumber}.";
alertClass = "alert-warning";
return;
}
guessCount++;
remainingGuesses--;
int difference = Math.Abs(userGuess - targetNumber);
double proximity = (double)difference / maxNumber;
if (userGuess == targetNumber)
{
gameDone = true;
message = "đ Congratulations! You guessed the number!";
alertClass = "alert-success";
}
else if (remainingGuesses == 0)
{
gameDone = true;
message = $"đ Game over! You've run out of guesses. The number was {targetNumber}.";
alertClass = "alert-danger";
}
else
{
switch (proximity)
{
case < 0.05:
message = "đĨ Scalding Hot!";
alertClass = "alert-danger";
break;
case < 0.1:
message = "đĄī¸ Very Hot!";
alertClass = "alert-warning";
break;
case < 0.2:
message = "đ Warm.";
alertClass = "alert-info";
break;
case < 0.3:
message = "đ¤ī¸ Cool.";
alertClass = "alert-secondary";
break;
default:
message = "âī¸ Cold!";
alertClass = "alert-secondary";
break;
}
}
}
private void ResetGame()
{
isGameStarted = false;
gameDone = false;
message = string.Empty;
alertClass = "";
userGuess = 0;
guessCount = 0;
remainingGuesses = 0;
}
private void HandleKeyPress(KeyboardEventArgs e)
{
if (e.Key == "Enter" && !gameDone && isGameStarted)
{
CheckGuess();
}
}
}