Настольные игры
Описание
В данном задании предлагается реализовать любую из настольных игр (например, реверси, шашки, шахматы, нарды, го и пр.).
Более оригинальные варианты:
- игра «Камисадо» (по сложности схожа с шашками);
- игра «Улей» (по сложности схожа с шахматами).
Минимальные требования (базовая часть)
Базовая реализация проекта, в которой должны разбираться все участники, должна:
- предоставлять возможность играть в реверси в режиме «человек против человека», используя графический интерфейс;
- не допускать невозможных по правилам игры ходов игроков;
- определять момент победы или ничьей и демонстрировать пользователям результат.
Расширенный интерфейс (индивидуальная часть)
Расширенный интерфейс должен добавлять хотя бы 2 различные возможности к базовому интерфейсу. Ниже перечислены возможные варианты расширения интерфейса, однако этим списком они не ограничены:
- показ возможных ходов для выбранной фигуры/шашки;
- отмена хода/ходов;
- меню выбора режима игры:
- человек против человека;
- человек против компьютера;
- компьютер против компьютера;
- сетевая игра;
- меню настроек ИИ;
- меню выбора разновидности настольной игры (например, шашки с дамками или без);
- просмотр таблицы рекордов;
- проигрывание записанных игр;
- интерфейс сохранения/загрузки игр;
- и т.д.
Искусственный интеллект (индивидуальная часть)
Алгоритм, делающий ход, никак не оценивая ситуацию (например, случайный или первый доступный ход), не считается за реализацию искусственного интеллекта.
Реализация искусственного интеллекта должна предоставлять:
- настройки сложности;
- как минимум 2 различных стратегии (это может быть один алгоритм с разными эвристиками).
Клиент-серверная архитектура (индивидуальная часть)
Помимо возможности просто играть в настольную игру по сети (см. Минимальные требования), клиент-серверная архитектура должна предоставлять хотя бы 2 дополнительные возможности:
- поддержка нескольких игровых сессий одновременно;
- запуск ИИ на серверной стороне в качестве противника;
- регистрация, аутентификация и авторизация (вход в систему и права на доступ);
- доступ к таблице рекордов;
- сохранение/загрузка игр;
- и т.д.
Работа с базой данных (индивидуальная часть)
Модуль для работы с базой данных должен предоставлять хотя бы 2 различных возможности:
- таблица рекордов;
- сохранения игровых сессий;
- база пользователей;
- и т.д.