Higher/Lower Game in C#
Lesedauer: 2 Minuten

Ich habe in einem der letzten Beiträge bereits gezeigt, wie man das klassische Higher/Lower Game in Python umsetzen kann. Dabei denkt sich der Computer eine Zahl zwischen 1 und 100 und der Nutzer muss diese Zahl erraten. Der Computer gibt nur Hinweise durch die Angabe, ob die Zahl größer oder kleiner ist. In diesem Beitrag möchte ich euch nun zeigen, wie ihr das Spiel als C# Konsolen-Applikationen umsetzen könnt, so dass ihr eine Möglichkeit habt, die beiden Sprachen Python und C# zu vergleichen.

Wir legen in Visual Studio ein neues Projekt an und wählen Console App (.NET Core) als Template. Das Projekt nennen wir HigherLower. Wir öffnen nun die Datei Program.cs und entfernen den Inhalt der Main-Methode, da wir hier nun unsere eigene Logik schreiben wollen.

Beim Starten des Spiels wollen wir einen kleinen Header anzeigen. Dafür nutzen wir die WriteLine-Methode der Console-Klasse.

// start screen
Console.WriteLine("------------------");
Console.WriteLine("- HIGHER | LOWER -");
Console.WriteLine("------------------");

Im nächsten Schritt wollen wir eine Variable definieren. Die Variable mit dem Namen isGameRunning gibt an, ob das Spiel aktuell noch läuft.

// game variables
var isGameRunning = true;

Wir wollen nun eine eigene Methode schreiben, welche die Auswahl des Spielers darstellt und gleichzeitig ein bisschen Error-Handling übernimmt, um sicherzustellen, dass nur Zahlen zwischen 1 und 100 eingegeben werden.

static int GetPlayerSelection()
{
    Console.WriteLine("Enter a number between 1 and 100:");
    var input = Console.ReadLine();

    if (int.TryParse(input, out int intVariable))
    {
        if (intVariable >= 1 && intVariable <= 100)
            return intVariable;
    }

    return GetPlayerSelection();
}

Nun beginnt die eigentliche Game Loop, welche so lange aktiv ist, wie isGameRunning auf true steht.

// game loop
while(isGameRunning)
{
    //
}

Zunächst lassen wir den Spieler eine Zahl auswählen. Dazu nutzen wir die Methode GetPlayerSelection und weisen das Ergebnis der Variablen player zu.

// selection of player
var player = GetPlayerSelection();

Im nächsten Schritt lassen wir den Computer eine zufällige Zahl zwischen 1 und 100 wählen.

// selection of computer
var computer = new Random().Next(1, 101);

Wir wollen die Anzahl der Versuche zählen. Dafür nutzen wir eine Variable counter, welche wir mit 1 initialisieren.

// set counter;
var counter = 1;

Nun folgt eine weitere Loop, welche überprüft, ob die eingebende Zahl der Zufallszahl entspricht. Wenn dies nicht der Fall ist, dann wird ein Hinweis ausgegeben, ob die Zahl zu groß oder zu klein ist. Anschließend erhöhen wir den Counter und lassen den Spieler eine neue Zahl eingeben. Wenn die Zahlen übereinstimmen, dann wird ein entsprechender Hinweis ausgegeben.

// game logic
while (player != computer)
{
    if (player > computer)
    {
        Console.WriteLine("Your number is too high!");
    }
    else
    {
        Console.WriteLine("Your number is too low!");
    }

    counter++;
    player = GetPlayerSelection();
}
	
Console.WriteLine($"Congratulations! You matched my number in {counter} steps!\n\n");

Anschließend fragen wir den Spieler, ob er eine weitere Runde spielen möchte. Auch hier validieren wir wieder, ob die Eingabe des Nutzers nicht ‚y‘ entspricht und die isGameRunning-Variable wird gegebenenfalls manipuliert.

// restart game
Console.WriteLine("Do you want to restart the game?\n[y] yes | [n] no");
var input = Console.ReadLine();
	
if (input.ToLower() != "y")
    isGameRunning = false;

Damit haben wir jetzt unser ersten C#-Spiel bereits fertig programmiert und können es ausprobieren. Dazu klicken wir in Visual Studio oben auf den Play-Button. Anschließend können wir direkt mit dem Spielen beginnen.

Durch die Verwendung einer .NET Core Vorlage, können wir das Spiel nicht nur auf Windows, sondern auch direkt auf Linux oder MacOS ausführen. Das fertige Spiel könnt ihr euch über den folgenden Button herunterladen.

Eigene API mit ASP.NET Core: Todo API Buch-Tipp: Cross-Plattform-Apps mit .NET MAUI entwickeln von André Krämer Alexa Skills mit .NET entwickeln