Announcement

Collapse
No announcement yet.

TicTacToe nur Zahlen als Eingabe akzeptieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TicTacToe nur Zahlen als Eingabe akzeptieren

    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:

    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();
            }
        }
    }
    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
Working...
X