[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на 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 і ознайомтеся з умовами навчання, ми спеціалізуємося тільки на індивідуальних заняттях, як для початківців, так і для просунутих програмістів. Ви можете взяти як одне заняття для опрацювання питання, що вас цікавить, так і кілька, для більш щільної роботи. Завдяки особистому кабінету, кожен студент підвищить якість свого навчання, у вашому розпорядженні:
- Доступ до пройденого матеріалу
- Тематичні статті
- Бібліотека книг
- Онлайн тестування
- Спілкування в закритих групах