Игра крестики нолики с компьютером на Си Часть 1

28 ноября 2018 - Администратор

Игра крестики нолики с компьютером на Си

Задача заключается в реализации игры крестики-нолики на языке программирования C++.  Программа должна предложить игроку игру за ноликов или крестиков, при любом выборе первыми ходят нолики. Программа должна создавать поле для игры в крестики-нолики. Игрок поочерёдно вводит номер строки и столбца, в котором он хочет сделать ход. После этого компьютер должен сделать ход, максимально мешающий игроку победить. Игра проходит так до тех пор, пока кто-либо не победит или не произойдёт ничья. Если клетка уже занята, то программа не должна дать сделать некорректный ход. Если кто-либо победит, программа должна уведомить об этом, после чего пользователь должен нажать кнопку, чтобы выйти из программы.Краткое описание алгоритма. При запуске программы показывается игровое поле, после чего первый игрок должен ввести номер строки и столбца клетки, на которой он хочет сделать ход. Программа считывает номер строки и столбца, введённые пользователем, проверяет, занято ли выбранное место, если занято, то предлагает сделать ход заново, если нет, то ход будет сделан. После этого компьютер, исходя из хода игрока, должен сделать свой ход таким образом, чтобы помешать игроку выиграть. Если кто-либо победил, программа выводит сообщение о том, кто из игроков победил, после чего пользователь нажимают любую кнопку, чтобы выйти из программы.

Переменные и массивы. Массив a[i][j] отвечает за номер строки и столбца каждой клетки. i – номер строки клетки, j – номер столбца клетки. igra и res отвечают за состояние игры.  Подробно  о работе с массивами в Си 

Если a[i][j] =0 то данная клетка свободна

Если a[i][j] =1 то данная клетка занята ноликом

Если a[i][j] =2 то данная клетка занята крестиком

 

 В программе присутствует пять процедур. подробно тема процедуры в Си

Процедура nul() обнуляет находящиеся элементы каждой клетки на поле, это нужно для начала игры. Если клетка была пустой, то процедура оставит её пустой, если клетка была занята крестиком или ноликом, процедура уберёт их оттуда.

visual() предназначена для визуализации поля при каждом ходе. Если клетка пуста, то ничего в ней не нарисуется, если на клетке сделали ход, то процедура нарисует этот ход.

Процедура hod(n). Процедура запрашивает номер строки и столбца в клетки, в которую ходит игрок и назначает на выбранную клетку нолик или крестик.  n – номер игрока, который должен ходить в данный момент. Если n = 1 то ходит нолик, если n = 2, то ходит крестик.

Процедура hodkomp(n), где n – номер игрока-крестика или игрока-нолика. Номера игроков идентичны hod(n). Процедура выбирает клетку, на которую должен сходить компьютер, таким образом, чтобы в наибольшей степени помешать игроку выиграть, и делает ход.

Процедура proverka() при каждом ходе проверяет, не победил ли какой-либо игрок, и возвращает одно из возможных значений. Если proverka() = 0, то никто пока не победил или случилась ничья, если proverka() = 1, то победил нолик, если 2 – крестик, если 3, то случилась ничья.

На схеме приведен алгоритм игры.

схема крестики нолики  с компьютером

 

В следующей статье мы приведем подробное описание всех процедур  и полный текст программы  игры крестики нолики с компьютером на Си.

Вернуться к содержанию

Комментарии (0)

Нет комментариев. Ваш будет первым!