Spieleprogrammierung - Tic-Tac-Toe

Tic-Tac-Toe in einer Konsolenanwendung programmieren

Jeder kennt das Spiel Tic-Tac-Toe, welches normalerweise von keinem Spieler gewonnen werden kann.

Das Spiel wurde hier mit Hilfe eines zweidimensionalem Arrays in einer Konsolenanwendung programmiert: 

namespace ConsoleApplication_tic_tac_toe_2
{
    class Program
    {
        static void Main(string[] args)
        {
            int spieler = 2; // Spieler 1 beginnt
            int eingabe = 0;
            int pruefflag = 0;
            int spielzug = 0;

            // Ein 3x3-Array mit den Feldnummern initialisieren
            char[,] spielfeld = 
            {
                {'1','2','3'},
                {'4','5','6'},
                {'7','8','9'}
            };

            do
            {
#region

                /* Spieler abwechseln */
                if (spieler == 2)
                    spieler = 1;
                else if (spieler == 1)
                    spieler = 2;

                switch (spieler)    // Prüfen, welcher Spieler an der Reihe ist
                {
                    case 1: // Spieler 1
                        {
                            switch (eingabe) // Dem gewählten Eingabefeld ein X zuweisen
                            {
                                case 1: spielfeld[0, 0] = 'X'; break;
                                case 2: spielfeld[0, 1] = 'X'; break;
                                case 3: spielfeld[0, 2] = 'X'; break;
                                case 4: spielfeld[1, 0] = 'X'; break;
                                case 5: spielfeld[1, 1] = 'X'; break;
                                case 6: spielfeld[1, 2] = 'X'; break;
                                case 7: spielfeld[2, 0] = 'X'; break;
                                case 8: spielfeld[2, 1] = 'X'; break;
                                case 9: spielfeld[2, 2] = 'X'; break;
                            } break;
                        }

                    case 2: // Spieler 2
                        {
                            switch (eingabe) // Dem gewählten Eingabefeld ein O zuweisen
                            {
                                case 1: spielfeld[0, 0] = 'O'; break;
                                case 2: spielfeld[0, 1] = 'O'; break;
                                case 3: spielfeld[0, 2] = 'O'; break;
                                case 4: spielfeld[1, 0] = 'O'; break;
                                case 5: spielfeld[1, 1] = 'O'; break;
                                case 6: spielfeld[1, 2] = 'O'; break;
                                case 7: spielfeld[2, 0] = 'O'; break;
                                case 8: spielfeld[2, 1] = 'O'; break;
                                case 9: spielfeld[2, 2] = 'O'; break;
                            } break;
                        }
                }
#endregion

#region
                Console.Clear();
                /* Das 3x3-Array mit den aktuellen Werten ausgeben */
                Console.WriteLine("     |     |      ");
                Console.WriteLine("  {0}  |  {1}  |  {2}", spielfeld[0, 0], spielfeld[0, 1], spielfeld[0, 2]);
                Console.WriteLine("_____|_____|_____ ");
                Console.WriteLine("     |     |      ");
                Console.WriteLine("  {0}  |  {1}  |  {2}", spielfeld[1, 0], spielfeld[1, 1], spielfeld[1, 2]);
                Console.WriteLine("_____|_____|_____ ");
                Console.WriteLine("     |     |      ");
                Console.WriteLine("  {0}  |  {1}  |  {2}", spielfeld[2, 0], spielfeld[2, 1], spielfeld[2, 2]);
                Console.WriteLine("     |     |      ");

                spielzug ++; // Jeden gültigen Spielzug mitzählen
#endregion 

#region
                if
                (
                    ((spielfeld[0, 0] == 'O') && (spielfeld[0, 1] == 'O') && (spielfeld[0, 2] == 'O')) ||
                    ((spielfeld[1, 0] == 'O') && (spielfeld[1, 1] == 'O') && (spielfeld[1, 2] == 'O')) ||
                    ((spielfeld[2, 0] == 'O') && (spielfeld[2, 1] == 'O') && (spielfeld[2, 2] == 'O')) ||
                    ((spielfeld[0, 0] == 'O') && (spielfeld[1, 0] == 'O') && (spielfeld[2, 0] == 'O')) ||
                    ((spielfeld[0, 1] == 'O') && (spielfeld[1, 1] == 'O') && (spielfeld[2, 1] == 'O')) ||
                    ((spielfeld[0, 2] == 'O') && (spielfeld[1, 2] == 'O') && (spielfeld[2, 2] == 'O')) ||
                    ((spielfeld[0, 0] == 'O') && (spielfeld[1, 1] == 'O') && (spielfeld[2, 2] == 'O')) ||
                    ((spielfeld[0, 2] == 'O') && (spielfeld[1, 1] == 'O') && (spielfeld[2, 0] == 'O'))
                )
                    {
                        Console.WriteLine("\nSpieler 2 hat gewonnen!");
                        Console.ReadLine();
                        break;
                    }
                    
                else if
                (
                    ((spielfeld[0, 0] == 'X') && (spielfeld[0, 1] == 'X') && (spielfeld[0, 2] == 'X')) ||
                    ((spielfeld[1, 0] == 'X') && (spielfeld[1, 1] == 'X') && (spielfeld[1, 2] == 'X')) ||
                    ((spielfeld[2, 0] == 'X') && (spielfeld[2, 1] == 'X') && (spielfeld[2, 2] == 'X')) ||
                    ((spielfeld[0, 0] == 'X') && (spielfeld[1, 0] == 'X') && (spielfeld[2, 0] == 'X')) ||
                    ((spielfeld[0, 1] == 'X') && (spielfeld[1, 1] == 'X') && (spielfeld[2, 1] == 'X')) ||
                    ((spielfeld[0, 2] == 'X') && (spielfeld[1, 2] == 'X') && (spielfeld[2, 2] == 'X')) ||
                    ((spielfeld[0, 0] == 'X') && (spielfeld[1, 1] == 'X') && (spielfeld[2, 2] == 'X')) ||
                    ((spielfeld[0, 2] == 'X') && (spielfeld[1, 1] == 'X') && (spielfeld[2, 0] == 'X'))
                )
                    {
                        Console.WriteLine("\nSpieler 1 hat gewonnen!");
                        Console.ReadLine();
                        break;
                    }
                else if (spielzug == 10)
                {
                    Console.WriteLine("\nUnentschieden!");
                    Console.ReadLine();
                    break;
                }
#endregion


#region
                /* Prüfen, ob das gewählte Feld bereits vergeben ist */
                do 
                {
                    Console.Write("\nSpieler {0}: Feld auswählen! ", spieler);
                    eingabe = Convert.ToInt32(Console.ReadLine());

                    if ((eingabe == 1) && (spielfeld[0, 0] == '1'))       // OK
                        pruefflag = 0;
                    else if ((eingabe == 2) && (spielfeld[0, 1] == '2'))  // OK
                        pruefflag = 0;
                    else if ((eingabe == 3) && (spielfeld[0, 2] == '3'))  // OK
                        pruefflag = 0;
                    else if ((eingabe == 4) && (spielfeld[1, 0] == '4'))  // OK
                        pruefflag = 0;
                    else if ((eingabe == 5) && (spielfeld[1, 1] == '5'))  // OK
                        pruefflag = 0;
                    else if ((eingabe == 6) && (spielfeld[1, 2] == '6'))  // OK
                        pruefflag = 0;
                    else if ((eingabe == 7) && (spielfeld[2, 0] == '7'))  // OK
                        pruefflag = 0;
                    else if ((eingabe == 8) && (spielfeld[2, 1] == '8'))  // OK
                        pruefflag = 0;
                    else if ((eingabe == 9) && (spielfeld[2, 2] == '9'))  // OK
                        pruefflag = 0;
                    else                                                  // Eingabefehler
                    {
                        Console.WriteLine("\nFehlerhafte Eingabe! Bitte wählen Sie ein neues Feld! ");
                        pruefflag = 1;
                    }
                } while (pruefflag == 1);
#endregion

            } while (true);
        }
    }
}

 

Tic-Tac-Toe in C#