Eksemplet viser hvordan man kan lave et “spil”, der går ud på at gætte det hemmelige tal.
using System;
namespace guessing_game
{
class Program
{
static void Main(string[] args)
{
int min = 1;
if (args.Length > 1)
{
if (!int.TryParse(args[0], out min))
{
Console.Error.WriteLine("Invalid Argument: minimum must be an integer.");
return;
}
}
int max = 1000;
if (args.Length > 0)
{
string maxStr = (args.Length > 1)? args[1]: args[0];
if (!int.TryParse(maxStr, out max))
{
Console.Error.WriteLine("Invalid Argument: maximum must be an integer.");
return;
}
}
if (!(min < max))
{
Console.Error.WriteLine("Invalid Argument: minimum must be greater than maximum");
return;
}
GuessingGame game = new GuessingGame(min, max);
do
{
game.play();
}
while (game.wantsRematch());
}
}
class GuessingGame
{
private int min;
private int max;
public GuessingGame(int max)
{
this.min = 1;
this.max = max;
}
public GuessingGame(int min, int max)
{
this.min = min;
this.max = max;
}
public bool wantsRematch()
{
Console.Write("Prøv igen? (Y/n): ");
string answer = Console.ReadLine();
bool isAfirmative = "y".Equals(answer.ToLower()) || "".Equals(answer);
return isAfirmative;
}
public void play()
{
Random randomNumberGenerator = new Random();
int secretNumber = randomNumberGenerator.Next(min, max);
Console.WriteLine($"Gæt et tal mellem {min} og {max}");
bool done = false;
while (!done)
{
Console.Write("Skriv dit gæt: ");
var guessLine = Console.ReadLine();
bool isValidInteger = int.TryParse(guessLine, out int guess);
if (!isValidInteger)
{
Console.WriteLine("Dit gæt skal være et tal!");
continue;
}
bool isInValidRange = min <= guess && guess <= max;
if (!isInValidRange)
{
Console.WriteLine($"Dit gæt skal være melem {min} og {max}!");
continue;
}
if (guess == secretNumber)
{
Console.WriteLine($"Rigtigt! Flot gættet. Det hemmelige tal er {secretNumber}");
done = true;
}
else
{
if (guess > secretNumber)
{
Console.WriteLine("Dit gæt er for højt");
}
if (guess < secretNumber)
{
Console.WriteLine("Dit gæt er for lavt");
}
Console.WriteLine("Gæt igen");
}
}
}
}
}