Пример #1
0
        static void TicTacToe(Homework_3 hw3)
        {
            int    height, width;
            string arrStng;

            Console.WriteLine("Введите ширину поля");
            width = Convert.ToInt32(Console.ReadLine());  // номер ряда
            Console.WriteLine("Введите высоту поля");
            height = Convert.ToInt32(Console.ReadLine()); // номер столбца

            string[,] arr = new string[height, width];
            arr           = hw3.FillTwoDimensionalArraySrting(arr, "+");
            arrStng       = hw3.PrintTwoDimensionalArrayString(arr);
            Console.Write(arrStng);


            int markedCellsCount = 0;

            do
            {
                int r, c;
                //   ДВА ИГРОКА проверяем валидность координат

                //Console.WriteLine("Введите номер строки");
                //try
                //{
                //    r = Convert.ToInt32(Console.ReadLine()); // номер ряда
                //}
                //catch
                //{
                //    Console.WriteLine("Неверно задано значение строки");
                //    continue;
                //}
                //Console.WriteLine("Введите номер столбца");
                //try
                //{
                //    c = Convert.ToInt32(Console.ReadLine()); // номер столбца
                //}
                //catch
                //{
                //    Console.WriteLine("Неверно задано значение столбца");
                //    continue;
                //}

                //   КОМП С СОБОЙ ИГРАЕТ
                //r = rnd.Next(0, height);
                //c = rnd.Next(0, width);

                //   ЧЕЛОВЕК-X & КОМП-O
                if (markedCellsCount % 2 == 0)
                {
AskRow:
                    Console.WriteLine($"Введите номер строки от 0 до {arr.GetLength(0) - 1}");
                    try
                    {
                        r = Convert.ToInt32(Console.ReadLine()); // номер ряда
                        if (r > arr.GetLength(0) || r < 0)
                        {
                            Console.WriteLine("Неверно задано значение строки");
                            Console.WriteLine();
                            goto AskRow;
                        }
                    }
                    catch
                    {
                        Console.WriteLine("Неверно задано значение строки");
                        Console.WriteLine();
                        continue;
                    }

AskColumn:
                    Console.WriteLine($"Введите номер столбца от 0 до {arr.GetLength(1) - 1}");
                    try
                    {
                        c = Convert.ToInt32(Console.ReadLine()); // номер столбца
                        if (c > arr.GetLength(0))
                        {
                            Console.WriteLine("Неверно задано значение столбца");
                            Console.WriteLine();

                            goto AskColumn;
                        }
                    }
                    catch
                    {
                        Console.WriteLine("Неверно задано значение столбца");
                        Console.WriteLine();
                        goto AskColumn;
                    }
                }
                else
                {
                    r = Random(0, height);
                    c = Random(0, width);
                }

                //  выбираем Х или О
                string currentMarker = markedCellsCount % 2 == 0 ? "X" : "0";

                //  проверяем занята ли клетка
                if (arr[r, c] != "+")
                {
                    Console.WriteLine("Увы! Эта клетка занята!");
                    continue;
                }
                //  ставим Х или О
                arr[r, c] = currentMarker;

                arrStng = hw3.PrintTwoDimensionalArrayString(arr);
                Console.Write(arrStng);

                //  проверяем клетки вокруг
                int markersCount = hw3.CheckCells(arr, r, c, currentMarker);

                //  ПОБЕДА
                if (markersCount == 3)
                {
                    Console.WriteLine($"Игрок {currentMarker} победил!");
                    Console.ReadLine();
                    return;
                }

                Console.WriteLine();
                markedCellsCount++;
            }while (markedCellsCount <= 25);

            Console.WriteLine("Однако, ничья!");
        }