C# :: Aufgabe #40 :: Lösung #2
4 Lösungen

#40
4 Gewinnt für die Konsole
Anfänger - C#
von Gustl
- 05.01.2013 um 16:57 Uhr
Es soll 4 Gewinnt für die Konsole programmiert werden.
2 Spieler spielen gegeneinander, ohne Computergegner (ohne künstliche Intelligenz), spielen können.
Optional mit Computergegner, aber bitte in der Beschreibung dann angeben.
2 Spieler spielen gegeneinander, ohne Computergegner (ohne künstliche Intelligenz), spielen können.
Optional mit Computergegner, aber bitte in der Beschreibung dann angeben.
#2

von Alucard1766 (930 Punkte)
- 11.02.2015 um 13:31 Uhr
straightforward hingeklatscht :D, sollte aber gegen Falscheingaben geschützt sein. AI Integration würde sich schwierig gestalten
C#-Code

public static int[][] grid = new int[3][]; public static Dictionary<int, string> drawingCharacters = new Dictionary<int, string>(); public static int currentPlayer; public static int turn; public static bool[] feldBesetzt; static void Main(string[] args) { Initiate(); DrawGrid(); while (WhoIsTheWinner() == "nobody" && turn < 9) { MakeTurn(); if (currentPlayer == 1) currentPlayer = 2; else currentPlayer = 1; } Console.WriteLine(WhoIsTheWinner() + " Wins!"); Console.ReadLine(); } private static string WhoIsTheWinner() { if ((grid[0][0] == 1 && grid[0][1] == 1 && grid[0][2] == 1) || (grid[1][0] == 1 && grid[1][1] == 1 && grid[1][2] == 1) || (grid[2][0] == 1 && grid[2][1] == 1 && grid[2][2] == 1) || (grid[0][0] == 1 && grid[1][0] == 1 && grid[2][0] == 1) || (grid[0][1] == 1 && grid[1][1] == 1 && grid[2][1] == 1) || (grid[0][2] == 1 && grid[1][2] == 1 && grid[2][2] == 1) || (grid[0][0] == 1 && grid[1][1] == 1 && grid[2][2] == 1) || (grid[0][2] == 1 && grid[1][1] == 1 && grid[2][0] == 1)) { return "Player 1"; } else if ((grid[0][0] == 2 && grid[0][1] == 2 && grid[0][2] == 2) || (grid[1][0] == 2 && grid[1][1] == 2 && grid[1][2] == 2) || (grid[2][0] == 2 && grid[2][1] == 2 && grid[2][2] == 2) || (grid[0][0] == 2 && grid[1][0] == 2 && grid[2][0] == 2) || (grid[0][1] == 2 && grid[1][1] == 2 && grid[2][1] == 2) || (grid[0][2] == 2 && grid[1][2] == 2 && grid[2][2] == 2) || (grid[0][0] == 2 && grid[1][1] == 2 && grid[2][2] == 2) || (grid[0][2] == 2 && grid[1][1] == 2 && grid[2][0] == 2)) { return "Player 2"; } return "nobody"; } private static void MakeTurn() { bool inputOk = false; string input; int chosenField = 0; while (!inputOk) { Console.Write("Player " + currentPlayer + ": "); input = Console.ReadLine(); if ((input == "1" || input == "2" || input == "3" || input == "4" || input == "5" || input == "6" || input == "7" || input == "8" || input == "9")) { chosenField = Int32.Parse(input); if (!feldBesetzt[chosenField-1]) inputOk = true; else Console.WriteLine("Falsche Eingabe\n"); } else { Console.WriteLine("Falsche Eingabe\n"); } } AddTurnToGrid(chosenField); DrawGrid(); turn++; } private static void AddTurnToGrid(int chosenField) { feldBesetzt[chosenField - 1] = true; switch (chosenField) { case 1: grid[0][0] = currentPlayer; break; case 2: grid[0][1] = currentPlayer; break; case 3: grid[0][2] = currentPlayer; break; case 4: grid[1][0] = currentPlayer; break; case 5: grid[1][1] = currentPlayer; break; case 6: grid[1][2] = currentPlayer; break; case 7: grid[2][0] = currentPlayer; break; case 8: grid[2][1] = currentPlayer; break; case 9: grid[2][2] = currentPlayer; break; default: break; } } private static void Initiate() { grid[0] = new int[] { 0, 0, 0 }; grid[1] = new int[] { 0, 0, 0 }; grid[2] = new int[] { 0, 0, 0 }; drawingCharacters.Add(1, "X"); drawingCharacters.Add(2, "O"); currentPlayer = 1; turn = 0; feldBesetzt = new bool[9]{false, false, false, false, false, false, false, false, false}; } private static void DrawGrid() { Console.Clear(); Console.WriteLine("\n " + GetString(0, 0) + " | " + GetString(0, 1) + " | " + GetString(0, 2) + " "); Console.WriteLine(" ---|---|---"); Console.WriteLine(" " + GetString(1, 0) + " | " + GetString(1, 1) + " | " + GetString(1, 2) + " "); Console.WriteLine(" ---|---|---"); Console.WriteLine(" " + GetString(2, 0) + " | " + GetString(2, 1) + " | " + GetString(2, 2) + " \n\n"); } private static string GetString(int row, int column) { if (grid[row][column] == 0) { return (row * 3 + column + 1).ToString(); } else { return drawingCharacters[grid[row][column]]; } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1