Skip to content

Commit d4fca7c

Browse files
committed
Update Game
1 parent 1882a4d commit d4fca7c

File tree

1 file changed

+62
-14
lines changed

1 file changed

+62
-14
lines changed

src/LinkDotNet.Blog.Web/Features/Components/ObjectNotFound.razor

Lines changed: 62 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<p>I really looked hard but I couldn't find the page you are looking for.</p>
55
<p>Go back to <a href="/">safety</a></p>
66
<hr />
7-
<h3>Play a Number Guessing Game!</h3>
7+
<h3>Play a Number Guessing Game</h3>
88
<p>Since you are here, why not play a number guessing game?</p>
99

1010
@if (!isGameStarted)
@@ -19,17 +19,20 @@
1919
else
2020
{
2121
<p>I'm thinking of a number between 1 and @maxNumber. Can you guess it?</p>
22+
<p>You have <strong>@remainingGuesses</strong> guesses left.</p>
2223
<div class="input-group mb-3 w-25 mx-auto">
2324
<input type="number" class="form-control" @bind="userGuess" min="1" max="@maxNumber" @onkeyup="HandleKeyPress" />
2425
<button class="btn btn-primary" @onclick="CheckGuess">Guess</button>
2526
</div>
2627
<p>Total guesses: <strong>@guessCount</strong></p>
2728
@if (!string.IsNullOrEmpty(message))
2829
{
29-
<p>@message</p>
30+
<div class="alert @alertClass mt-3" role="alert">
31+
@message
32+
</div>
3033
@if (gameDone)
3134
{
32-
<button class="btn btn-success" @onclick="ResetGame">Play Again</button>
35+
<button class="btn btn-success mt-3" @onclick="ResetGame">Play Again</button>
3336
}
3437
}
3538
}
@@ -40,7 +43,10 @@
4043
private int userGuess;
4144
private int guessCount;
4245
private int maxNumber;
46+
private int maxGuesses;
47+
private int remainingGuesses;
4348
private string message = string.Empty;
49+
private string alertClass = "";
4450
private bool gameDone = false;
4551
private bool isGameStarted = false;
4652

@@ -63,39 +69,79 @@
6369
{
6470
case DifficultyLevel.Easy:
6571
maxNumber = 10;
72+
maxGuesses = 3;
6673
break;
6774
case DifficultyLevel.Medium:
6875
maxNumber = 100;
76+
maxGuesses = 7;
6977
break;
7078
case DifficultyLevel.Hard:
7179
maxNumber = 1000;
80+
maxGuesses = 10;
7281
break;
82+
default:
83+
throw new ArgumentOutOfRangeException(nameof(difficulty), difficulty, null);
7384
}
7485

75-
var random = new Random();
76-
targetNumber = random.Next(1, maxNumber + 1);
86+
remainingGuesses = maxGuesses;
87+
targetNumber = Random.Shared.Next(1, maxNumber + 1);
7788
}
7889

7990
private void CheckGuess()
8091
{
8192
if (gameDone || !isGameStarted)
8293
return;
8394

84-
if (userGuess < targetNumber)
95+
if (userGuess < 1 || userGuess > maxNumber)
8596
{
86-
guessCount++;
87-
message = "Too low, try again!";
97+
message = $"Please enter a number between 1 and {maxNumber}.";
98+
alertClass = "alert-warning";
99+
return;
88100
}
89-
else if (userGuess > targetNumber)
101+
102+
guessCount++;
103+
remainingGuesses--;
104+
105+
int difference = Math.Abs(userGuess - targetNumber);
106+
double proximity = (double)difference / maxNumber;
107+
108+
if (userGuess == targetNumber)
90109
{
91-
guessCount++;
92-
message = "Too high, try again!";
110+
gameDone = true;
111+
message = "🎉 Congratulations! You guessed the number!";
112+
alertClass = "alert-success";
93113
}
94-
else
114+
else if (remainingGuesses == 0)
95115
{
96-
guessCount++;
97116
gameDone = true;
98-
message = "🎉 Congratulations! You guessed the number!";
117+
message = $"😞 Game over! You've run out of guesses. The number was {targetNumber}.";
118+
alertClass = "alert-danger";
119+
}
120+
else
121+
{
122+
switch (proximity)
123+
{
124+
case < 0.05:
125+
message = "🔥 Scalding Hot!";
126+
alertClass = "alert-danger";
127+
break;
128+
case < 0.1:
129+
message = "🌡️ Very Hot!";
130+
alertClass = "alert-warning";
131+
break;
132+
case < 0.2:
133+
message = "🌞 Warm.";
134+
alertClass = "alert-info";
135+
break;
136+
case < 0.3:
137+
message = "🌤️ Cool.";
138+
alertClass = "alert-secondary";
139+
break;
140+
default:
141+
message = "❄️ Cold!";
142+
alertClass = "alert-secondary";
143+
break;
144+
}
99145
}
100146
}
101147

@@ -104,8 +150,10 @@
104150
isGameStarted = false;
105151
gameDone = false;
106152
message = string.Empty;
153+
alertClass = "";
107154
userGuess = 0;
108155
guessCount = 0;
156+
remainingGuesses = 0;
109157
}
110158

111159
private void HandleKeyPress(KeyboardEventArgs e)

0 commit comments

Comments
 (0)