Hallo.
Ich bin seit ein paar Tagen dabei mein C# wieder aufzufrischen, nachdem ich vor ein paar Jahren das Interesse am Programmieren (leider) ein wenig verloren hatte.
Als erstes Projekt habe ich mir ein TicTacToe Spiel in der Konsole vorgenommen.
Hier mal mein aktueller Stand:
Mir geht's jetzt darum, dass in der main-Methode nur Zahlen als a und b akzeptiert werden. Wird z.B. ein Buchstabe eingegeben, soll eine Fehlermeldung erscheinen und zu einer erneuten Eingabe aufgefordert werden.
Ich weiß nun nicht, ob dass mit einer Ausnahmebehandlung geht, oder ich einfach nur ne ganz banale if-Verzweigung einbauen muss
Würde mich freuen, wenn ihr mir da ein bisschen auf die Sprünge helfen könntet, auch wenn die Frage vielleicht ein wenig "noobig" ist
Ich hoffe mein Programmierstil ist nicht allzu übel. Vielleicht findet ihr ja auch Stellen, die man noch verbessern könnte (:
Liebe Grüße und einen schönen Sonntagabend noch!
~Retromops
Ich bin seit ein paar Tagen dabei mein C# wieder aufzufrischen, nachdem ich vor ein paar Jahren das Interesse am Programmieren (leider) ein wenig verloren hatte.
Als erstes Projekt habe ich mir ein TicTacToe Spiel in der Konsole vorgenommen.
Hier mal mein aktueller Stand:
Code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Array { class Program { public static void draw(char[,] matrix) { Console.WriteLine(" 0 | 1 | 2 \n "); Console.WriteLine("0 -{0}-|-{1}-|-{2}-", matrix[0, 0], matrix[0, 1], matrix[0, 2]); Console.WriteLine("1 -{0}-|-{1}-|-{2}-", matrix[1, 0], matrix[1, 1], matrix[1, 2]); Console.WriteLine("2 -{0}-|-{1}-|-{2}-", matrix[2, 0], matrix[2, 1], matrix[2, 2]); } public static void set(int a, int b,ref char c,ref char[,] matrix) { if (matrix[a, b] == 'X' || matrix[a, b] == 'O') { Console.WriteLine("Feld schon belegt!"); Console.ReadKey(); } else matrix[a, b] = c; if (c == 'X') c = 'O'; else c = 'X'; } public static bool proof(char[,] matrix) { for (int i = 0; i < 3; i++) { if (matrix[i, 0] == 'X' && matrix[i, 1] == 'X' && matrix[i, 2] == 'X') { Console.WriteLine("Spieler 1 gewinnt!"); return true; } else if (matrix[0, i] == 'X' && matrix[1, i] == 'X' && matrix[2, i] == 'X') { Console.WriteLine("Spieler 1 gewinnt!"); return true; } else if (matrix[i, 0] == 'O' && matrix[i, 1] == 'O' && matrix[i, 2] == 'O') { Console.WriteLine("Spieler 2 gewinnt!"); return true; } else if (matrix[0, i] == 'O' && matrix[1, i] == 'O' && matrix[2, i] == 'O') { Console.WriteLine("Spieler 2 gewinnt!"); return true; } } if (matrix[0, 0] == 'X' && matrix[1, 1] == 'X' && matrix[2, 2] == 'X' || matrix[0, 2] == 'X' && matrix[1, 1] == 'X' && matrix[2, 0] == 'X') { Console.WriteLine("Spieler 1 gewinnt!"); return true; } else if (matrix[0, 0] == 'O' && matrix[1, 1] == 'O' && matrix[2, 2] == 'O' || matrix[0, 2] == 'O' && matrix[1, 1] == 'O' && matrix[2, 0] == 'O') { Console.WriteLine("Spieler 2 gewinnt!"); return true; } else return false; } static void Main(string[] args) { char[,] matrix = new char[3, 3] { { ' ', ' ', ' ' }, { ' ', ' ', ' ' }, { ' ', ' ', ' ' } }; int a; int b; char ch = 'X'; do { Console.Clear(); draw(matrix); Console.WriteLine("\n W?hlen Sie Zeile: "); int.TryParse(Console.ReadLine(), out a); Console.WriteLine("\n W?hlen Sie Spalte: "); int.TryParse(Console.ReadLine(), out b); set(a, b, ref ch, ref matrix); } while (proof(matrix) == false); Console.ReadKey(); } } }
Ich weiß nun nicht, ob dass mit einer Ausnahmebehandlung geht, oder ich einfach nur ne ganz banale if-Verzweigung einbauen muss
Würde mich freuen, wenn ihr mir da ein bisschen auf die Sprünge helfen könntet, auch wenn die Frage vielleicht ein wenig "noobig" ist
Ich hoffe mein Programmierstil ist nicht allzu übel. Vielleicht findet ihr ja auch Stellen, die man noch verbessern könnte (:
Liebe Grüße und einen schönen Sonntagabend noch!
~Retromops