Карта лабиринта содержится в файле Maze.txt и состоит из 20 комнат 5 разных типов:
ACB....
..DCB..
..B....
CADCABE
B..D...
EACB...
.......
,где A, B, C, D - обычные комнаты, E - выход из лабиринта.
Комнаты могут состоять из следующих типов тайлов:
пустое пространство: ‘ ‘ (пробел)
стена: ‘#’
пол: ‘.’
игрок: ‘@’
выход из комнаты: ‘x’
выход из всего лабиринта: ‘Q’
ключи: ‘K’
Была реализована следующая механика: изначально все выходы из комнаты закрыты (их от 1 до 4), чтобы их открыть требуется подобрать ключ (монетка). Начальное положение игрока в комнате не зависит от двери, через которую он вошёл, однако он может вернуться в предыдущую комнату, пойдя в противоположном направлении.
Все игровые элементы имеют свои отдельные спрайты.
Управление реализовано через клавиши W, A, S, D (можно только перемещается, ключи и прочие игровые элементы реагируют на приближение игрока). Выйти можно с помощью клавиши Esc.
При попадании в пропасть персонаж умирает (выводится сообщение и игра завершается).
При выходе из лабиринта игра считается пройденной (выводится сообщение и игра завершается).
-
анимация статических объектов - ключ (монетка) вращается;
-
плавная спрайтовая анимация динамических объектов - походка игрока, его анимация бездействия, открытие дверей (анимация дверей четырёхкадровая, это может быть незаметно из-за освещения уровня);
-
графический эффект перехода между комнатами - fade out / fade in;
-
эффекты пост-обработки всего изображения - изображение намеренно затемняется для создания атмосферы;
-
источники света - персонаж “освещает” (=изменяет цвет) соседних тайлов в некотором радиусе;
-
анимация источников света - свет тускнеет с расстоянием.
Доступно по ссылке https://youtu.be/1tFF3XQwTPI.
На видео заметна просадка кадров, это вызвано использованием OBS Studio (программа для захвата экрана) и работой в виртуальной машине. В стандартных условиях анимации выглядят весьма плавно.
- cmake ./
- make
- ./bin/main