An open API service indexing awesome lists of open source software.

https://github.com/j-city/rogueliketemplate


https://github.com/j-city/rogueliketemplate

Last synced: over 1 year ago
JSON representation

Awesome Lists containing this project

README

          

# Игра Roguelike

[Wiki](https://ru.wikipedia.org/wiki/Roguelike)

Требуется реализовать игру в стиле Roguelike

Использовать псевдографику. Либы ncurses/pdcurses или что угодно, для вывода в консоль.

1) Игра пошаговая. Она всегда слушает нажатие клавиши, после нажатия происходит шаг игры.
2) В игре есть игрок, мы им управляем. Он может атаковать кинжалом (ближний бой) и луком дальний бой.
3) В игре есть враги нескольких видов. Ближний бой, дальний бой, танк (много здоровья, делает ход раз в 2 шага игры). Они ходят рандомно, но если игрок в радиусе R начинают бежать на него или атаковать дальним боем. Враг не может встать на блок, если там уже кто-то стоит.
4) В игре есть карта, по которой ходит игрок, она хардкодится и состоит из нескольких локаций.
5) Есть блоки из которых состоит карта. Это:
- Стена - игроки и враги не могут ходить сквозь стены
- Трава - по ней ходят игрок и враги
- Спавнер - (игроки и враги не могут ходить сквозь спавнер) спавнит врагов раз в N ходов определенного типа в радиусе R от спавнера. (Если врагов этого типа больше K на карте, то не спавнит) По визуалу спавнера можно понять какой тип врагов он генерит.
- Оружее меч - может подбирать игрок. Дает усиленный ближний урон на N ходов.
- Оружее свиток файеробол - дает на N ходов усиленный дальний урон в радиусе R (визуально видно, в какой области произошел удар)
- Хилка - восстанавливает N очков здоровья
- Дверь - переход на другую локацию
- Бомба - если на неё наступает игрок или враг - наносит урон в радиусе R
6) После подбора какого-либо итема происходит спавн итема этого типа где-нибудь на карте.
7) Итем не может заспавнится в блоке, если там уже что-то есть, кроме травы.
8) У игрока есть здоровье, Очки за убийство монстров, Снаряды ближнего/дальнего боя. Эта информация показывается в 0 строке терминала
9) В последней строке отображается инфо, что произошло на ходу.
- игрок нанес урон (сколько)
- игрок получил урон (сколько)
- игрок подобрал что-то (что)
- игрок получил очки (сколько)
10) Все итемы можно вынести в отдельную иерархию сущностей, а можно, чтоб они были блоками как и стена например
11) При старте игры по центру экрана написано название игры, по пробелу она начинается
12) При проигрыше, по центру экрана пишется Game Over и сколько ходов прожил и сколько очков заработал игрок
13) Весь баланс в отдельном классе, чтобы можно было легко его поменять (Радиус действия, Здоровье врагов, Сколько очков дают итд)
14) Сбоку экрана отображается легенда, какой символ что означает

Возможные допы:
- Генератор карт
- Редактор уровней
- Разрушаемые блоки, который потом можно ставить на карте
- Бесконечная карта (двери тогда не нужны?)
- Область видимости врагов и игрока
- Добавить визуал через SFML
- Сохранение и система рекордов
- Добавить кооператив с помощью SFML
- Добавить FPS режим
- ...

В репе лишь пример иерархии классов. Можете менять, что хотите.