Разработать два класса: игрок, осуществляющий ходы случайным образом, и “думающий” игрок (можно простейший алгоритм, не в нём суть задания). У игроков есть метод ПридуматьХод, в который передаётся текущее состояние игры (объект класса Доска), выдающий пару координат, соответствующую ходу. У игроков есть имя в виде текстовой строки. Создать класс Игра, моделирующий матч между несколькими игроками (не более пяти), которые ходят знаками x, o, #, $, %. Добавить в Игра метод СделатьХод с необязательным параметром ПараКоординат, соответствующей ходу. Если пара не задана, ход выбирается автоматически в соответствии с встроенной стратегией игрока.
Реализовать возможность полноценной пошаговой игры, моделируемой классом Игра. Предусмотрите возможность осуществления очередного хода как пользователем, так и логикой, встроенной в соответствующий класс игрока.
Класс СлучайныйИгрок
Атрибуты: имя; знак, которым он ходит.
Методы: получения имени, получения знака, ПридуматьХод.
Класс УмныйИгрок
Атрибуты: имя; знак, которым он ходит.
Методы: получения имени, получения знака, ПридуматьХод.
Класс Доска
Атрибуты: матрица клеток, размеры, признак пустого поля (знак).
Методы: получения состояния ячейки по её координатам, получения размера по горизонтали, получения размера по вертикали, получения признака пустого поля, установки знака по заданным координатам.
Класс Игра
Атрибуты: доска; массив СлучайныхИгроков; массив УмныхИгроков; номер игрока, который сейчас ходит.
Методы: добавления СлучайногоИгрока, добавления УмногоИгрока, удаления игрока по имени, выполнения хода автоматически (без параметров), выполнения хода по заданным координатам, получения победителя, получения выполняющего ход игрока.
Необходимо выбрать STL-контейнер (https://ru.cppreference.com/w/cpp/container), который наиболее подходит в вашем случае. Обоснуйте свой выбор. Статические и динамические массивы ([], new T[SIZE]) использовать запрещено. Стандартные контейнеры безопаснее и выполняют работу с динамической памятью за вас. Если в задании сказано "список чего-то", это не значит, что можно использовать только std::list.
Написать на с++.
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |