[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
Чтобы создать игру «Крестики-нолики» на C#, вы можете использовать двумерный массив для представления игрового поля, а затем использовать цикл, чтобы предложить пользователю ввести свои ходы и соответствующим образом обновить поле.
В качестве альтернативы, можно использовать одномерный массив, для некоторых работа с таким представляется более легкой задачей.
Ниже приведен пример фрагмента кода, демонстрирующий, как сделать простую командную версию игры «Крестики-нолики» на основе одномернного массива:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
class Program { //making array and //by default I am providing 0-9 where no use of zero static char[] arr = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; static int player = 1; //By default player 1 is set static int choice; //This holds the choice at which position user want to mark // The flag variable checks who has won if it's value is 1 then someone has won the match //if -1 then Match has Draw if 0 then match is still running static int flag = 0; static void Main(string[] args) { do { Console.Clear();// whenever loop will be again start then screen will be clear Console.WriteLine("Player1:X and Player2:O"); Console.WriteLine("\n"); if (player % 2 == 0)//checking the chance of the player { Console.WriteLine("Player 2 Chance"); } else { Console.WriteLine("Player 1 Chance"); } Console.WriteLine("\n"); Board();// calling the board Function choice = int.Parse(Console.ReadLine());//Taking users choice // checking that position where user want to run is marked (with X or O) or not if (arr[choice] != 'X' && arr[choice] != 'O') { if (player % 2 == 0) //if chance is of player 2 then mark O else mark X { arr[choice] = 'O'; player++; } else { arr[choice] = 'X'; player++; } } else //If there is any possition where user want to run //and that is already marked then show message and load board again { Console.WriteLine("Sorry the row {0} is already marked with {1}", choice, arr[choice]); Console.WriteLine("\n"); Console.WriteLine("Please wait 2 second board is loading again....."); Thread.Sleep(2000); } flag = CheckWin();// calling of check win } while (flag != 1 && flag != -1); // This loop will be run until all cell of the grid is not marked //with X and O or some player is not win Console.Clear();// clearing the console Board();// getting filled board again if (flag == 1) // if flag value is 1 then someone has win or //means who played marked last time which has win { Console.WriteLine("Player {0} has won", (player % 2) + 1); } else// if flag value is -1 the match will be draw and no one is winner { Console.WriteLine("Draw"); } Console.ReadLine(); } // Board method which creats board private static void Board() { Console.WriteLine(" | | "); Console.WriteLine(" {0} | {1} | {2}", arr[1], arr[2], arr[3]); Console.WriteLine("_____|_____|_____ "); Console.WriteLine(" | | "); Console.WriteLine(" {0} | {1} | {2}", arr[4], arr[5], arr[6]); Console.WriteLine("_____|_____|_____ "); Console.WriteLine(" | | "); Console.WriteLine(" {0} | {1} | {2}", arr[7], arr[8], arr[9]); Console.WriteLine(" | | "); } //Checking that any player has won or not private static int CheckWin() { #region Horzontal Winning Condtion //Winning Condition For First Row if (arr[1] == arr[2] && arr[2] == arr[3]) { return 1; } //Winning Condition For Second Row else if (arr[4] == arr[5] && arr[5] == arr[6]) { return 1; } //Winning Condition For Third Row else if (arr[6] == arr[7] && arr[7] == arr[8]) { return 1; } #endregion #region vertical Winning Condtion //Winning Condition For First Column else if (arr[1] == arr[4] && arr[4] == arr[7]) { return 1; } //Winning Condition For Second Column else if (arr[2] == arr[5] && arr[5] == arr[8]) { return 1; } //Winning Condition For Third Column else if (arr[3] == arr[6] && arr[6] == arr[9]) { return 1; } #endregion #region Diagonal Winning Condition else if (arr[1] == arr[5] && arr[5] == arr[9]) { return 1; } else if (arr[3] == arr[5] && arr[5] == arr[7]) { return 1; } #endregion #region Checking For Draw // If all the cells or values filled with X or O then any player has won the match else if (arr[1] != '1' && arr[2] != '2' && arr[3] != '3' && arr[4] != '4' && arr[5] != '5' && arr[6] != '6' && arr[7] != '7' && arr[8] != '8' && arr[9] != '9') { return -1; } #endregion else { return 0; } } } } |
Правила игры следующие: Кто поставит три соответствующих знака (X или O) по горизонтали, вертикали или диагонали, тот и будет победителем.
Я надеюсь, что вам понравилось читать эту статью, и она оказалась легкой для понимания. Пожалуйста, дайте мне знать, если у вас есть какие-либо комментарии или исправления.
Так же вам может быть интересна предыдущая статья — Как сделать форму авторизации.
Вы начинающий программист, который хочет изучить все тонкости языка C#?
Пройдите наш тест на 13 вопросов, чтобы узнать, как много вы знаете на самом деле!
C# Braincheck |
Вы хотите научится писать код на языке программирования C#?
Создавать различные информационные системы, состоящие из сайтов, мобильных клиентов, десктопных приложений, телеграмм-ботов и т.д.
Переходите к нам на страницу Dijix и ознакомьтесь с условиями обучения, мы специализируемся только на индивидуальных занятиях, как для начинающих, так и для более продвинутых программистов. Вы можете взять как одно занятие для проработки интересующего Вас вопроса, так и несколько, для более плотной работы. Благодаря личному кабинету, каждый студент повысит качество своего обучения, в вашем распоряжении:
- Доступ к пройденному материалу
- Тематические статьи
- Библиотека книг
- Онлайн тестирование
- Общение в закрытых группах
Живи в своем мире, программируй в нашем.