Будем делать небольшую асинхронную текстовую игру в Телеге!
Наша БД будет выглядеть следующим образом (которую необходимо создать):
Person - персонаж (пользователь):
-
UserID - ID пользователя
-
Nickname - никнейм персонажа
-
Level - уровень
-
HP - здоровье
-
CurHP - текущее здоровье
-
Money - число денег
-
Attack - базовая атака персонажа
-
Magic Attack - базовая магическая атака персонажа
-
XP - опыт
-
Armour - базовая броня персонажа
-
Magic Armour - базовая магическая броня персонажа
-
LocationID - в какой локации сейчас находится персонаж
Mobs - монстры:
-
MobID - ID монстра
-
HP - здоровье
-
XP - опыт
-
ReqLevel - необходимый уровень для появления у персонажа
-
AttackType - тип атаки (физический/магический)
-
Attack - размер атаки
-
Armour - броня монстра
-
Magic Armour - магическая броня монстра
Locations - места
-
LocationID - ID места
-
XCoord - X координата
-
YCoord - Y координата
-
LocationType - тип локации (бывает город, бывает подземелье)
Items - предметы
-
ItemID - ID товара
-
Cost - цена товара
-
CostToSale - цена продажи товара
-
ItemType - тип товара (оружие, броня, шлем, сапоги, наручи, зелье)
-
HP - Дополнительное HP (которое дает зелье-предмет)
-
Mana - Дополнительная мана (которая дает зелье-предмет)
-
Attack - дополнительная атака
-
Magic Attack - дополнительная магическая атака
-
Armour - дополнительная броня
-
Magic Armour - дополнительная магическая броня
-
ReqLevel - нужный уровень для ношения предмета
Так же:
-
Дефолтные значения HP, Mana etc можно задавать самостоятельно (как и все остальные константы для предметов). Уровень повышается при получении 100 XP.
-
Для каждого персонажа должны быть его предметы (отдельная таблица: связка UserID - ItemID - quantity - индиктор ношения). Пользователь может носить только 1 тип оружия-брони-шлема-сапогов-наручей, зелий сколько угодно (при этом любая вещь может быть в неограниченном кол-ве, хоть и носит только одну)
-
Пользователь может переходить по локациям, которые находятся на расстоянии по координатам не более 10 (лучше всего завести таблицу между локациями, откуда можно и куда, чтобы не считать это каждый раз). Время перемещения = расстояние в секундах (например, если от точки A до точки B расстояние по координатам по прямой = 10, то персонаж идет 10 секунд), во время перемещения персонаж ничего не может сделать
-
Внутри города пользователь восстанавливает полностью ману и здоровье, а также в городе можно прикупить вещей (стоит создать таблицу с товарами и городом, где их можно купить)
-
Внутри подземелий нападает монстр, рандомно генерурющийся по уровню персонажа (не может быть выше, чем уровень игрока). Бой происходит поэтапно:
-
Вначале действие игрока (получить информацию о монстре, выпить зелье, атаковать выбранным типом урона)
-
После действие монстра (атака минус броня персонажа по типу атаки)
-
И так далее до победы/поражения (HP <= 0)
Ожидание ответа игрока длится 1 минуту. После этого он погибает и возрождается с нуля в самой первой локации
-
Итого:
-
Персонаж появляется в первой локации (городе) с начальным числом денег. В городе он может что-то прикупить себе или продать, а также покопаться в инвентаре и примерить одежду и получить информацию по себе
-
Далее он может отправиться в любое место, доступное в радиусе
-
Внутри подземелья пользователь убивает монстра, получает XP, и затем может также покопаться в инвентаре, получить по себе статистику и пойти далее в любую доступную в радиусе локацию
Реализация по интерфейсу может быть любой (кнопки etc, главное - функциональность и возможность им пользоваться...)
Что будет оцениваться? Возможность создать персонажа, возможность купить-продать вещь, посмотреть статистику персонажа-монстра (с учетом надетых вещей), ожидание пути до подземелья и ход боя. Если все работает - 10 баллов