Jeder kann coden / Programmieren & TicTacToe / C# Einführung / Bedingte Anweisungen Grundlagen / Bedingte Anweisungen Vertiefung
Bedingte Anweisungen & TicTacToe¶
![]() |
![]() |
Link zur Microsoft Dokumentation (Quelle) Link zum roten Faden auf Miro Link zu Tutorial auf w3schools (if, else) Link zu Tutorial auf w3schools (switch, case) |
Vorbereitung: Spielbrett definieren¶
Wir definieren das 3x3-Spielfeld statisch, damit wir keine Schleifen verwenden müssen. Das Spielfeld besteht aus char
-Werten, die entweder ein leeres Feld oder ein Zeichen für den Spieler ('X' oder 'O') darstellen.
char[,] board = {
{ 'X', 'O', 'X' },
{ 'O', 'X', ' ' },
{ ' ', ' ', 'O' }
};
Beispiel: Überprüfung der Gewinnbedingungen¶
Hier verwenden wir if
, else if
und else
, um die Bedingungen für einen Gewinner ohne Schleifen zu überprüfen. Wir gehen durch alle möglichen Gewinnkombinationen (Reihen, Spalten und Diagonalen) manuell durch.
string result = "Kein Gewinner";
// Prüfe Reihen
if (board[0, 0] == board[0, 1] && board[0, 1] == board[0, 2] && board[0, 0] != ' ')
result = $"Spieler {board[0, 0]} gewinnt!";
else if (board[1, 0] == board[1, 1] && board[1, 1] == board[1, 2] && board[1, 0] != ' ')
result = $"Spieler {board[1, 0]} gewinnt!";
else if (board[2, 0] == board[2, 1] && board[2, 1] == board[2, 2] && board[2, 0] != ' ')
result = $"Spieler {board[2, 0]} gewinnt!";
// Prüfe Spalten
if (board[0, 0] == board[1, 0] && board[1, 0] == board[2, 0] && board[0, 0] != ' ')
result = $"Spieler {board[0, 0]} gewinnt!";
else if (board[0, 1] == board[1, 1] && board[1, 1] == board[2, 1] && board[0, 1] != ' ')
result = $"Spieler {board[0, 1]} gewinnt!";
else if (board[0, 2] == board[1, 2] && board[1, 2] == board[2, 2] && board[0, 2] != ' ')
result = $"Spieler {board[0, 2]} gewinnt!";
// Prüfe Diagonalen
if (board[0, 0] == board[1, 1] && board[1, 1] == board[2, 2] && board[0, 0] != ' ')
result = $"Spieler {board[0, 0]} gewinnt!";
else if (board[0, 2] == board[1, 1] && board[1, 1] == board[2, 0] && board[0, 2] != ' ')
result = $"Spieler {board[0, 2]} gewinnt!";
Console.WriteLine(result)
Kein Gewinner
Beispiel: Unentschieden ohne Schleifen prüfen¶
Da wir aktuell noch keine Schleifen verwenden, prüfen wir jedes Feld manuell, um festzustellen, ob das Spiel unentschieden ist (d.h. wenn alle Felder belegt sind, aber kein Gewinner festgestellt wurde).
// Prüfe, ob alle Felder belegt sind (ohne Schleifen)
if (board[0, 0] != ' ' && board[0, 1] != ' ' && board[0, 2] != ' ' &&
board[1, 0] != ' ' && board[1, 1] != ' ' && board[1, 2] != ' ' &&
board[2, 0] != ' ' && board[2, 1] != ' ' && board[2, 2] != ' ')
{
return "Unentschieden!";
}
else
{
return "Spiel läuft noch.";
}
Spiel läuft noch.
Beispiel: Spielerwechsel mit switch
¶
Um den Spieler zu wechseln, verwenden wir eine einfache switch
-Anweisung. Es wird überprüft, welcher Spieler an der Reihe ist, und entsprechend gewechselt.
char currentPlayer = 'X';
switch (currentPlayer)
{
case 'X':
currentPlayer = 'O';
break;
case 'O':
currentPlayer = 'X';
break;
default:
currentPlayer = 'X';
break;
}
Console.WriteLine("Aktueller Spieler: " + currentPlayer);
Aktueller Spieler: O