Настольные игры

Описание

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

../_images/reversi.jpg

Реверси. Начальное расположение шашек на поле 8×8.

../_images/checkers.png

Шашки. Начальное расположение.

../_images/backgammon.jpg

Нарды. Начальное расположение и направление движения шашек.

Минимальные требования (базовая часть)

Базовая реализация проекта, в которой должны разбираться все участники, должна:

  • предоставлять возможность играть в реверси в режиме «человек против человека», используя графический интерфейс;
  • не допускать невозможных по правилам игры ходов игроков;
  • определять момент победы или ничьей и демонстрировать пользователям результат.

Расширенный интерфейс (дополнительная часть)

Расширенный интерфейс должен добавлять хотя бы 2 различные возможности к базовому интерфейсу. Ниже перечислены возможные варианты расширения интерфейса, однако этим списком они не ограничены:

  • показ возможных ходов для выбранной фигуры/шашки;
  • отмена хода/ходов;
  • меню выбора режима игры:
    • человек против человека;
    • человек против компьютера;
    • компьютер против компьютера;
    • сетевая игра;
  • меню настроек ИИ;
  • меню выбора разновидности настольной игры (например, шашки с дамками или без);
  • просмотр таблицы рекордов;
  • проигрывание записанных игр;
  • интерфейс сохранения/загрузки игр;
  • и т.д.

Искусственный интеллект (дополнительная часть)

Алгоритм, делающий ход, никак не оценивая ситуацию (например, случайный или первый доступный ход), не считается за реализацию искусственного интеллекта.

Реализация искусственного интеллекта должна предоставлять:

  • настройки сложности;
  • как минимум 2 различных стратегии (это может быть один алгоритм с разными эвристиками).

Клиент-серверная архитектура (дополнительная часть)

Помимо возможности просто играть в настольную игру по сети (см. Минимальные требования), клиент-серверная архитектура должна предоставлять хотя бы 2 дополнительные возможности:

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

Работа с базой данных (дополнительная часть)

Модуль для работы с базой данных должен предоставлять хотя бы 2 различных возможности:

  • таблица рекордов;
  • сохранения игровых сессий;
  • база пользователей;
  • и т.д.