Реализация игры в стиле Roguelike
0
109
Требуется реализовать игру в стиле Roguelike на С++
Использовать псевдографику. Либы ncurses/pdcurses или что угодно, для вывода в консоль.
Генератор карт
Добавить визуал через SFML или иная либа
Игра делает апдейт раз в N миллисекунд.
В игре есть игрок, мы им управляем. Он может атаковать кинжалом (ближний бой) , луком дальний бой, и дробовик - дальний бой много пуль. Полёты пули видны на карте.
У игрока есть область видимости (сектор окружности). Все элементы, кроме стен и травы, рисуются только если они в области видимости.
В игре есть враги нескольких видов. Ближний бой, дальний бой, танк (много здоровья, делает ход раз в 2 шага игры). Они ходят рандомно, но если игрок в радиусе R начинают бежать на него или атаковать дальним боем. Враг и игрок не может встать на блок, если там уже кто-то стоит.
В игре есть карта, по которой ходит игрок, она хардкодится и состоит из нескольких локаций.
Есть блоки из которых состоит карта. Это:
Стена - игроки и враги не могут ходить сквозь стены
Трава - по ней ходят игрок и враги
Спавнер - (игроки и враги не могут ходить сквозь спавнер) спавнит врагов раз в N ходов определенного типа в радиусе R от спавнера. (Если врагов этого типа больше K на карте, то не спавнит) По визуалу спавнера можно понять какой тип врагов он генерит.
Меч - может подбирать игрок. Дает усиленный ближний урон на N ударов.
Оружее свиток файеробол - дает на N ударов усиленный дальний урон в радиусе R (визуально видно, в какой области произошел удар)
Хилка - восстанавливает N очков здоровья
Дверь - переход на другую локацию
Бомба - если на неё наступает игрок или враг - наносит урон в радиусе R
После подбора какого-либо итема происходит спавн итема этого типа где-нибудь на карте.
Итем не может заспавнится в блоке, если там уже что-то есть, кроме травы.
У игрока есть здоровье, Очки за убийство монстров, Снаряды ближнего/дальнего боя. Эта информация показывается в 0 строке терминала
В последней строке отображается инфо, что произошло на ходу.
игрок нанес урон (сколько)
игрок получил урон (сколько)
игрок подобрал что-то (что)
игрок получил очки (сколько)
Все итемы можно вынести в отдельную иерархию сущностей, а можно, чтоб они были блоками как и стена например
При старте игры по центру экрана написано название игры, по пробелу она начинается
При проигрыше, по центру экрана пишется Game Over и сколько ходов прожил и сколько очков заработал игрок
Весь баланс в отдельном классе, чтобы можно было легко его поменять (Радиус действия, Здоровье врагов, Сколько очков дают итд)
Сбоку экрана отображается легенда, какой символ что означает
Реализовать до 25.01.2024
Использовать псевдографику. Либы ncurses/pdcurses или что угодно, для вывода в консоль.
Генератор карт
Добавить визуал через SFML или иная либа
Игра делает апдейт раз в N миллисекунд.
В игре есть игрок, мы им управляем. Он может атаковать кинжалом (ближний бой) , луком дальний бой, и дробовик - дальний бой много пуль. Полёты пули видны на карте.
У игрока есть область видимости (сектор окружности). Все элементы, кроме стен и травы, рисуются только если они в области видимости.
В игре есть враги нескольких видов. Ближний бой, дальний бой, танк (много здоровья, делает ход раз в 2 шага игры). Они ходят рандомно, но если игрок в радиусе R начинают бежать на него или атаковать дальним боем. Враг и игрок не может встать на блок, если там уже кто-то стоит.
В игре есть карта, по которой ходит игрок, она хардкодится и состоит из нескольких локаций.
Есть блоки из которых состоит карта. Это:
Стена - игроки и враги не могут ходить сквозь стены
Трава - по ней ходят игрок и враги
Спавнер - (игроки и враги не могут ходить сквозь спавнер) спавнит врагов раз в N ходов определенного типа в радиусе R от спавнера. (Если врагов этого типа больше K на карте, то не спавнит) По визуалу спавнера можно понять какой тип врагов он генерит.
Меч - может подбирать игрок. Дает усиленный ближний урон на N ударов.
Оружее свиток файеробол - дает на N ударов усиленный дальний урон в радиусе R (визуально видно, в какой области произошел удар)
Хилка - восстанавливает N очков здоровья
Дверь - переход на другую локацию
Бомба - если на неё наступает игрок или враг - наносит урон в радиусе R
После подбора какого-либо итема происходит спавн итема этого типа где-нибудь на карте.
Итем не может заспавнится в блоке, если там уже что-то есть, кроме травы.
У игрока есть здоровье, Очки за убийство монстров, Снаряды ближнего/дальнего боя. Эта информация показывается в 0 строке терминала
В последней строке отображается инфо, что произошло на ходу.
игрок нанес урон (сколько)
игрок получил урон (сколько)
игрок подобрал что-то (что)
игрок получил очки (сколько)
Все итемы можно вынести в отдельную иерархию сущностей, а можно, чтоб они были блоками как и стена например
При старте игры по центру экрана написано название игры, по пробелу она начинается
При проигрыше, по центру экрана пишется Game Over и сколько ходов прожил и сколько очков заработал игрок
Весь баланс в отдельном классе, чтобы можно было легко его поменять (Радиус действия, Здоровье врагов, Сколько очков дают итд)
Сбоку экрана отображается легенда, какой символ что означает
Реализовать до 25.01.2024