Консольные Крестики-нолики на C# на одном компьютере
Запись от 8Observer8 размещена 11.07.2019 в 19:56. Обновил(-а) 8Observer8 07.12.2025 в 19:25
Показов 20371
Комментарии 7
|
Содержание блога Консольные Крестики-нолики. Прикрепил архив с проектом в Visual Studio и EXE. Играть в C# песочнице: https://www.onlinegdb.com/fork/yWZ3O512a Исходники на GitHub Исходники
Program.cs
Примечание. Перед тем как запустить EXE нужно в консоле выполнить команду: chcp 65001 иначе будут выводиться знаки ??????? вместо текста на русском: Команда chcp 65001 переключает консоль в UTF-8. Способ номер 2. Можно добавить следующие две строки в метод Main. Я проверял, работает:
Я скопировал C# код выше в ChatGPT и попросил его перевести на JavaScript: https://plnkr.co/edit/r14HOc81r9e1EAWE. Исходники (получилось неиграбельно)
Для веб-версии на JavaScript проще всего сделать версию с GUI. Я попросил Gemini добавить GUI на HTML, CSS, и Bootstrap: https://plnkr.co/edit/xjQRl4N9tG5iyMRq Исходники (играбельно)
| |||||||||||||||||||||||||
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 7
Комментарии
-
Добавил перевод с C# на JavaScript с помощью ChatGPTЗапись от 8Observer8 размещена 05.12.2025 в 00:31
-
Крестики-нолики по интернету на двоих на JavaScript, HTML/CSS и Firebase: https://tic-tac-toe-network-v1-0-js.web.app/. Этот пример был сгенерирован с помощью ChatGPT.Запись от 8Observer8 размещена 05.12.2025 в 21:22
Обновил(-а) 8Observer8 06.12.2025 в 18:40 -
Я попросил ChatGPT написать туториал на основе JS-версии игры выше. Залил результат на два хостинга:
Версия на английском сгенерировалась полностью, а на русском только половина. У туториале есть весь код, демка в браузере с игрой и инструкции, как установить Firebase Tools и т.д. Инструкцию не проверял.
Сервис Firebase от Google отлично подходит для игр на двоих по интернету. У Firebase есть быстрая и бесплатная база данных RTDB (Firebase Run Time Database). Можно использовать RTDB, чтобы изучать работу с NoSQL базами данных, наподобие MongoDB. RTDB похожа на MongoDB. Программируя маленькие игры по сети типа Крестики-Нолики, Шашки, Шахматы, Го, Морской Бой и т.д. можно практиковаться с выбранным языком программирования, HTML, CSS, сетевым программированием, базами данных, программированием графики и т.д.Запись от 8Observer8 размещена 06.12.2025 в 19:19
-
Добавил инструкцию по запуску примера из первого сообщения на C# с помощью .NET и консоли:
Инструкция по запуску игры с помощью консоли:
- Скачать и установить .NET: https://dotnet.microsoft.com/en-us/download
- Открыть CMD и набрать команду создания нового проекта: dotnet new console -n Tic-Tac-Toe
- Скопировать код выше в созданную папку
- Запустить проект командой из директории проекта: dotnet run (Либо создать EXE с помощью команды: dotnet build)
- В качестве легковесного редактора кода можно использовать Sublime Text 4: https://www.sublimetext.com/download
Примечание: .NET 10 займёт на вашем компьютере 1.17 GB, а Sublime Text 4 всего лишь 53.63 MB. Это гораздо меньше, чем Visual Studio. Если, например, у вас слабый ноутбук и мало места на жёстком диске, то вы всё равно можете изучать программирование через практику на простых играх.Запись от 8Observer8 размещена 06.12.2025 в 19:29
Обновил(-а) 8Observer8 06.12.2025 в 19:37 -
Добавил ссылку для игры в песочнице на C#: https://www.onlinegdb.com/fork/yWZ3O512aЗапись от 8Observer8 размещена 07.12.2025 в 19:04
-
Я попросил Gemini добавить в версию на JavaScript добавить GUI на HTML, CSS, и Bootstrap: https://plnkr.co/edit/xjQRl4N9tG5iyMRqЗапись от 8Observer8 размещена 07.12.2025 в 19:15
Обновил(-а) 8Observer8 08.12.2025 в 14:01 -
ChatGPT перевёл консольную игру c C# на Си без видимых на первый взгляд проблем: https://onlinegdb.com/SjmNWcEmcE
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 146 147 148 149 150
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h> // ANSI colors (ConsoleColor equivalents) #define GREEN "\x1b[32m" #define WHITE "\x1b[37m" #define YELLOW "\x1b[33m" #define MAGENTA "\x1b[35m" #define RED "\x1b[31m" #define RESET "\x1b[0m" char field[3][3] = { { ' ', ' ', ' ' }, { ' ', ' ', ' ' }, { ' ', ' ', ' ' } }; bool isXMove = true; const char *coordErrorMessage = "Координаты должны быть: [0, 2]"; void Draw(); void ShowField(); void Update(int row, int col); void ShowError(const char *msg); bool IsWinner(char player); void ClearField(); void EndGame(const char *player); void Game_Run() { Draw(); int row, col; char line[256]; while (1) { printf(GREEN "\n Введите номер ряда: [0, 2]\n (или -1 для выхода): " WHITE); if (!fgets(line, sizeof(line), stdin) || sscanf(line, "%d", &row) != 1) { ShowError(coordErrorMessage); continue; } if (row == -1) break; printf(GREEN "\n Введите номер столбца: [0, 2]\n (или -1 для выхода): " WHITE); if (!fgets(line, sizeof(line), stdin) || sscanf(line, "%d", &col) != 1) { ShowError(coordErrorMessage); continue; } if (col == -1) break; Update(row, col); Draw(); } } void Update(int row, int col) { if (row == -1 || col == -1) return; if (row >= 0 && row <= 2 && col >= 0 && col <= 2) { if (field[row][col] == ' ') { field[row][col] = isXMove ? 'X' : 'O'; if (IsWinner('X')) { Draw(); EndGame("Крестики"); } else if (IsWinner('O')) { Draw(); EndGame("Нолики"); } isXMove = !isXMove; } else { ShowError("По этим координатам уже сделан ход."); } } else { ShowError(coordErrorMessage); } } void Draw() { system("cls"); // Windows clear-screen printf(YELLOW "\n Крестики-Нолики\n\n" MAGENTA); ShowField(); printf(WHITE); } void ShowField() { printf(" %c | %c | %c\n", field[0][0], field[0][1], field[0][2]); printf(" ---+---+---\n"); printf(" %c | %c | %c\n", field[1][0], field[1][1], field[1][2]); printf(" ---+---+---\n"); printf(" %c | %c | %c\n", field[2][0], field[2][1], field[2][2]); } void ShowError(const char *msg) { printf(RED "\n %s\n" WHITE, msg); printf(" Нажмите Enter..."); getchar(); } bool IsWinner(char p) { return // Rows (field[0][0] == p && field[0][1] == p && field[0][2] == p) || (field[1][0] == p && field[1][1] == p && field[1][2] == p) || (field[2][0] == p && field[2][1] == p && field[2][2] == p) || // Columns (field[0][0] == p && field[1][0] == p && field[2][0] == p) || (field[0][1] == p && field[1][1] == p && field[2][1] == p) || (field[0][2] == p && field[1][2] == p && field[2][2] == p) || // Diagonals (field[0][0] == p && field[1][1] == p && field[2][2] == p) || (field[0][2] == p && field[1][1] == p && field[2][0] == p); } void ClearField() { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) field[r][c] = ' '; } void EndGame(const char *player) { printf(YELLOW "\n Победили %s!\n" WHITE, player); printf("\n Нажмите Enter для продолжения"); getchar(); ClearField(); } int main() { Game_Run(); return 0; }
Запись от 8Observer8 размещена 10.12.2025 в 19:26
Обновил(-а) 8Observer8 10.12.2025 в 19:53


