Что это за игра
«Минотавр» — пошаговая игра в консоли с ASCII-графикой. Игрок проходит семь лабиринтов подряд: в каждом нужно найти ключ, дойти до выхода и не попасться монстрам. Играть можно одному или вдвоём по сети.
Лабиринты каждый раз новые, и каждый следующий больше предыдущего. Сначала игрок видит только клетки рядом с собой, остальная карта открывается по мере исследования.
Как играть
Игра пошаговая: игрок делает ход, затем ходят все монстры. Пока игрок не походил, ничего не происходит, поэтому спешить не нужно.
Что есть на карте
| Символ | Объект | Что делает |
|---|---|---|
| P | Игрок | Ходит на одну клетку за ход или пропускает ход |
| P | Напарник | Есть только в сетевой игре; та же буква, другой цвет |
| + - | | Стена | Непроходима |
| . | Проход | По нему можно ходить |
| K | Ключ | Нужен, чтобы открыть выход |
| E | Выход | Открывается, только когда ключ найден |
| H | Охотник | Ходит каждый ход и идёт к игроку самым коротким путём. Пока ключ не найден, старается перехватить игрока по дороге к ключу |
| W | Бродяга | Ходит каждый ход и бродит по лабиринту. Заметив игрока рядом, гонится за ним, а потеряв из виду, идёт туда, где видел его последний раз |
| M | Минотавр | Финальный босс 7-го уровня: прыгает через стены и после прыжка отдыхает |
| ! | Метка прыжка | Куда Минотавр приземлится на следующем ходу |
| * | Заморозка | Монстры стоят 3 хода |
| ^ | Факел | Игрок видит дальше до конца уровня |
| ? | Компас | Показывает следующие 8 клеток пути к ключу, а после ключа — к выходу |
Управление
| Клавиша | Действие |
|---|---|
| W A S D | Шаг вверх, влево, вниз, вправо |
| Пробел | Пропустить ход |
| H | Справка |
| P | Пауза: продолжить, сохранить, выйти в меню |
Правила
- Шаг в стену не тратит ход: игрок остаётся на месте и видит подсказку.
- Выход открывается только после того, как найден ключ.
- Уровень пройден, когда игрок с ключом дошёл до выхода. Пройден седьмой уровень — игра выиграна.
- Игрок проигрывает, если оказался в одной клетке с монстром или они поменялись клетками за один ход.
- Бонусы подбираются, когда игрок встаёт на их клетку.
- В игре вдвоём пойманный игрок выбывает до конца уровня и возвращается на следующем. Уровень пройден, когда до выхода дошли все оставшиеся игроки; игра проиграна, только когда пойманы оба.
Что видит игрок
- Свет
- Клетки рядом с игроком: видны и карта, и монстры, и предметы.
- Полутень
- Клетки чуть дальше: видна только карта, монстров не видно.
- Тень
- Всё остальное: не видно ничего.
Карта, которую игрок уже видел, остаётся на экране серым. Факел расширяет освещённую область до конца уровня.
Уровни
Семь уровней, каждый следующий больше и опаснее. На каждом есть ключ и выход; число монстров и бонусов такое:
| Уровень | Размер | Охотников | Бродяг | Минотавр | Бонусов |
|---|---|---|---|---|---|
| 1 | 7 × 9 | 0 | 1 | — | 1 |
| 2 | 9 × 11 | 1 | 0 | — | 1 |
| 3 | 11 × 13 | 1 | 1 | — | 2 |
| 4 | 13 × 15 | 1 | 2 | — | 2 |
| 5 | 15 × 17 | 2 | 1 | — | 3 |
| 6 | 19 × 21 | 2 | 2 | — | 3 |
| 7 | 21 × 23 | 2 | 2 | 1 | 4 |
Уровень можно не генерировать, а загрузить из файла. Игра проверяет файл и сообщает, если уровень составлен неверно: например, выход замурован или два предмета стоят в одной клетке.
Финальный босс
На седьмом уровне вместо одного охотника игрока ждёт Минотавр. Он не ходит по коридорам, а прыгает через стены, повторяя три фазы:
- 01ПрицелМинотавр выбирает ближайшего игрока и отмечает ! область 3 × 3 вокруг него. Метку видно даже в тени, а игрок получает предупреждение. У него есть один ход, чтобы уйти из области.
- 02ПрыжокМинотавр перелетает через стены в центр области, но не дальше 6 клеток. Кто остался в области, пойман.
- 03Отдых3 хода Минотавр стоит на месте. Это окно, чтобы проскочить мимо него к ключу или выходу. Заморозка продлевает отдых.
Очки и рекорды
Очки считаются по ходам: чем быстрее пройден уровень, тем больше очков. За каждый подобранный бонус начисляется ещё 20.
\text{очки} = 100 + \max(0,\, 300 - \text{ходы}) + 20 \cdot \text{бонусы}Таблица рекордов хранит 10 лучших результатов: имя, очки, достигнутый уровень и дату.
Экраны и сохранения
- Главное меню: новая игра, продолжить, игра по сети, рекорды, справка, выход.
- Справка: что означают символы и как управлять.
- Пауза: продолжить, сохранить, выйти в меню.
- Экраны проигрыша и победы с итоговыми очками.
- Партию можно сохранить посреди уровня и потом продолжить с того же места.
Игра по сети
Двое игроков подключаются к общему серверу и проходят лабиринты вместе. Сервер работает постоянно, игрокам не нужно ничего настраивать у себя, кроме адреса сервера.
- Лобби: после подключения игрок видит, кто ещё в сети, может написать в общий чат и начать игру с другим игроком.
- Ходы по очереди: сначала ходит первый игрок, затем второй, затем монстры.
- Чат в игре: во время партии игроки могут переписываться.
- Ключ достаточно найти одному. Пойманный игрок выбывает до конца уровня и возвращается на следующем; уровень пройден, когда до выхода дошли все оставшиеся. Партия идёт, пока не пойманы оба. Очки общие.
- Если один из игроков отключился, второй видит сообщение об этом, а партия не теряется.
Запуск
Игра запускается из консоли. При запуске можно указать:
- папку, где лежат сохранения;
- файл таблицы рекордов;
- файл уровня, чтобы сыграть его вместо случайного;
- зерно генерации (seed), чтобы получить те же лабиринты;
- адрес сервера для игры по сети.
Если ничего не указано, используются папки и файлы рядом с игрой.
Требования к результату
- Работает в Windows и Linux на Python 3.10 и новее.
- Все сторонние библиотеки ставятся одной командой из requirements.txt.
- Любая ошибка — неверный файл, обрыв связи, неверный ввод — показывается понятным сообщением, игра не падает.
- Код покрыт автоматическими тестами и документацией, к игре есть руководство пользователя.