demo: [Github Pages]
Двухмерная игра в стиле фэнтези, где игроку предстоит выставлять своих персонажей против персонажей нечисти. После каждого раунда, восстанавливается жизнь уцелевших персонажей игрока и повышается их уровень. Максимальный уровень - 4.
Размер поля фиксирован (8x8). Персонажи разного типа могут ходить на разное расстояние (в базовом варианте можно перескакивать через других персонажей - т.е. как конь в шахматах):
- Мечники/Скелеты - 4 клетки в любом направлении
- Лучники/Вампиры - 2 клетки в любом направлении
- Маги/Демоны - 1 клетка в любом направлении
Дальность атаки также ограничена:
- Мечники/Скелеты - могут атаковать только соседнюю клетку
- Лучники/Вампиры - на ближайшие 2 клетки
- Маги/Демоны - на ближайшие 4 клетки
Клетки считаются "по радиусу", допустим для мечника зона поражения будет выглядеть вот так:
Для лучника(отмечено красным):
Игрок и компьютер последовательно выполняют по одному игровому действию, после чего управление передаётся противостоящей стороне. Как это выглядит:
- Выбирается собственный персонаж (для этого на него необходимо кликнуть левой кнопкой мыши)
- Далее возможен один из трёх вариантов:
- Перемещение: выбирается свободное поле, на которое можно передвинуть персонажа (для этого на поле необходимо кликнуть левой кнопкой мыши)
- Атака: выбирается поле с противником, которое можно атаковать с учётом ограничений по дальности атаки (для этого на персонаже противника необходимо кликнуть левой кнопкой мыши)
- Отмена: отмена выделения по нажатию клавиши Esc
Игра заканчивается тогда, когда все персонажи игрока погибают, либо достигнут выигран максимальный уровень (см.ниже Уровни).
Уровень завершается выигрышем игрока тогда, когда все персонажи компьютера погибли.
Баллы, которые набирает игрок за уровень, равны сумме жизней оставшихся в живых персонажей.
Персонажи генерируются рандомно в столбцах 1 и 2 для игрока и в столбцах 7 и 8 для компьютера:
У игрока генерируются два персонажа: (случайным образом - типов Bowman
и Swordsman
) с уровнем 1, характеристики соответствуют таблице характеристик (см. раздел ниже).
У компьютера генерируется произвольный набор персонажей в количестве 2 единиц.
У игрока повышается level игроков на 1 + восстанавливается здоровье выживших. Дополнительно случайным образом добавляется новый персонаж уровня 1.
У компьютера случайным образом генерируются персонажи в количестве, в 2 раза большем, чем изначально с уровнем от 1 до 2. Показатели атаки и защиты увеличиваются пропорционально уровню персонажа.
У игрока повышается level игроков на 1 + восстанавливается здоровье выживших. Дополнительно случайным образом добавляется два новых персонаж уровня 1 или 2.
У компьютера случайным образом генерируются персонажи в количестве, в 3 раза большем, чем изначально с уровнем от 1 до 3. Показатели атаки и защиты увеличиваются пропорционально уровню персонажа.
У игрока повышается level игроков на 1 + восстанавливается здоровье выживших. Дополнительно случайным образом добавляется два новых персонаж уровня от 1 до 3.
У компьютера случайным образом генерируются персонажи в количестве, в 2 раза большем, чем изначально с уровнем от 1 до 4. Показатели атаки и защиты увеличиваются пропорционально уровню персонажа.
Валидные строковые идентификаторы (к которым привязаны изображения):
- swordsman
- bowman
- magician
- daemon
- undead
- vampire
- Bowman - 25/25
- Swordsman - 40/10
- Magician - 10/40
- Undead - 25/25
- Vampire - 40/10
- Daemon - 10/40
- На 1 повышает поле level автоматически после каждого раунда
- Показатель health приводится к значению: текущий уровень + 80 (но не более 100). Т.е. если у персонажа 1 после окончания раунда уровень жизни был 10, а персонажа 2 - 80, то после levelup:
- персонаж 1 - жизнь станет 90
- персонаж 2 - жизнь станет 100
- Повышение показателей атаки/защиты также привязаны к оставшейся жизни по формуле:
attackAfter = Math.max(attackBefore, attackBefore * (1.8 - life / 100)
, т.е. если у персонажа после окончания раунда жизни осталось 50%, то его показатели улучшатся на 30%. Если же здоровье осталось на уровне 1%, то показатели никак не увеличатся.