Многопользовательская Онлайн-Игра Ticket To Ride

Привет, Хабр! Мы — Тимофей Василевский, Сергей Дымашевский и Максим Чайка — только что закончили первый курс бакалавриата» Прикладная математика и информатика «в питерской ВШ?.

В качестве семестрового проекта на C++ мы написали симулятор известной настольной игры «Билет на поездку».

Что мы сделали, а что нет, читайте под катом.



Многопользовательская онлайн-игра Ticket to Ride

Наша версия игры.

Ниже расположены карты игрока, колода и дополнительные маршруты, справа карты на столе и информация об игроках.



Правила игры

Суть игры заключается в том, чтобы проходить железнодорожные перегоны между городами и составлять маршруты.

Каждый этап имеет свой цвет, и для его постройки необходимо иметь достаточное количество карточек трейлеров одного цвета.

Пройденный этап приносит вам определенное количество очков в конце игры, а сам маршрут считается пройденным, если от ваших трейлеров существует непрерывный путь из одного города в другой.

Вот что происходит в нашей игре при строительстве сцены: красный игрок построил сцену между верхними станциями, а желтый — между нижней левой и верхней правой:

Многопользовательская онлайн-игра Ticket to Ride

Более подробные правила игры В Ticket to ride могут играть от двух до пяти игроков.

Каждый ход игрок выполняет одно из четырех действий: может построить сцену, взять карты трейлеров со стола или из колоды, построить станцию или пройти новые маршруты.

Есть специальные прицепы - локомотивы, их можно использовать вместо прицепа любого цвета, а также они необходимы для постройки некоторых перегонов.

Станции строятся в городах и используются следующим образом: вы можете предположить, что один из путей ваших соперников, прилегающий к станции, построен вами, и учесть это при прокладке своего маршрута.

В конце игры подсчитываются очки: за каждый построенный маршрут вы получаете столько очков, сколько на нем написано, за каждый непостроенный маршрут вы теряете столько же.

Игрок, построивший самый длинный непрерывный маршрут, получает дополнительные очки.

Посмотреть полные правила здесь .



Многопользовательская онлайн-игра Ticket to Ride

Варианты двух маршрутов между Варшавой и Парижем Идея написать именно такой проект нам показалась хорошей, потому что он содержит сложную логику и архитектуру, взаимодействие с интерфейсом и взаимодействие с сервером.

Собственно, так мы распределили обязанности внутри проекта.



Архитектура приложения



Многопользовательская онлайн-игра Ticket to Ride

Мы использовали шаблон проектирования Модель-Представление-Контроллер (MVC); вы можете прочитать, как это работает здесь связь .

В нашем случае это было реализовано так:

  1. Имеется графический интерфейс, который реагирует на клики пользователя в определенных местах игрового поля, а затем передает эти действия контроллеру (вызывает функции контроллера).

  2. Действия контроллера зависят от того, играют ли пользователи онлайн или локально.

    Если локально, то контроллер просто передает действие из графического интерфейса в удобном для игровой модели формате.

    Если игра ведется по сети, то контроллер отправляет запрос через клиента.

    Он, в свою очередь, через сервер сообщает игре, которая хранится только в одном экземпляре, информацию о действии, которое хотел совершить игрок.

  3. Игровая модель принимает действия от контроллера.

    Почти всегда контроллер передает ему полиморфный класс Turn:

   

struct Turn { public:

Теги: #Разработка игр #программирование #Образовательный процесс в IT #C++ #бакалавриат #настольные игры #настольные игры #контроллер представления модели #ВШ? СПб #ВШ? спб #билет на поездку
Вместе с данным постом часто просматривают: