Приключенческая игра, разработанная с использованием vue.js;

git clone https://github.com/bastarder/Endless.git
cd Endless
npm install
npm run devЕсли вы похожи на меня, студент, такой как фронтальное развитие, страдает от проектов, которые не практикуются, или вы уже большой выстрел, вы могли бы также завершить такую небольшую игру со мной. Самая сложная боевая система в этой игре была в основном завершена, и остались некоторые относительно простые функции, чтобы дать вам хорошие упражнения.
Это простая приключенческая игра, и я также надеюсь получить лучшее упражнение в процессе написания;
Я действительно не очень хорош в дизайне данных и дизайне пользовательского интерфейса. Если вы чувствуете, что готовы помочь, когда вы свободны, вы можете связаться со мной;
QQ:85257684 , Wechat: I85257
Боевая система в игре использует режим技能冷却, отправляя один навык на одну цель за раз, и вычисляя эффект одного действия в качестве логики боя.
Прежде всего, общая логика: (Fight.js)
Когда技能被释放, будет уделено приоритет для ввода этого метода. Этот метод принимает 3 параметра,技能对象,攻击方и атаку,被攻击方. Вы можете настроить его на основе этих трех сторон, чтобы определить, можно ли выпустить этот навык;
Когда навык определяется, чтобы быть в состоянии быть успешно выпущенным, навык войдет в восстановление;
Извлеките состояние type : 1 из злоумышленника и извлечь состояние type : 2 из злоумышленника;
type : 1 - это все состояния, которые могут повлиять на этот навык и должны быть созданы в соответствии с этим правилом при настройке состояния, в противном случае оно не будет признано;
type : 2 - это все состояния, которые могут повлиять на изменения, вызванные врагом этим навыком, и должны быть созданы в соответствии с этим правилом при настройке состояния, в противном случае оно не будет признано;
Извлечь и объединить события в объекте навыка и состояния, сортируйте по приоритету;
Объекты действия навыка рассчитываются по всем состояниям и эффектам действия навыков и отсортируются в соответствии с весами;
Правила для предварительных весов
1-10暴击命中闪避11-89 нормальный слой, обычные эффекты, такие как ущерб, вызванные навыками, добавление статуса, удаление, обновление и т. Д., Большинство из них находятся в нормальном уровне;>90 на 90 уровне, конечный результат этого навыка по всем узнаваемым бонусам (например, нанести ущерб, восстановление здоровья и т. Д.). Если ваш статус должен вызвать最终加成, такой как увеличение конечного ущерба на 50%, то это событие должно быть определена на 90 -м уровне, после определения результата расчета;9999 все веса не должны превышать 9999. При расчете этого слоя объект действия будет преобразован в параметры, которые могут быть непосредственно выполнены интерфейсом unit и не будут изменены;После того, как объект действия генерируется, определите, является ли атака действительной (например, обязательна, промаха и т. Д. PS: обязательна будет предпочтительным более 100%промахом);
После подтверждения того, что он действителен, объект действий будет передана攻击者и被攻击者, чтобы иметь дело;
На данный момент навык полностью выпущен, и каждый навык выпускается 1s , что означает, что после выпуска навыка все навыки получат 1 -секундную перезарядку (если время восстановления навыка составляет менее 1 секунды, он будет вынужден увеличиться до 1 секунды);
Выпуск навыка заканчивается. Если умирает одна из атакующей стороны и атакованной стороны, она возвращается ложным
Расчет потребления
В настоящее время используется формула: (Уровень * Базовая сумма) * (Уровень силы + 1) * Параметры класса
Случайный расчет
Вероятность фиксируется: [1, 1, 1, 0,95, 0,9, 0,8, 0,75, 0,62, 0,54, 0,41, 0,33, 0,28, 0,2, 0,17, 0,13, 0,1, 0,04, 0,03, 0,01, 0,01]
Расчет амплитуды атрибута
Обработка после укрепления сбоя
Общий процесс: Судите о предварительных условиях -> Судите о вероятности укрепления -> пересчитывать атрибуты
На карте мы всегда можем запустить события, чтобы получить конкретные эффекты. В настоящее время есть два встроенных мероприятия:
Событие сражений : когда герой входит в эту сетку события, он будет использовать объект события, чтобы создать битвы и перейти к интерфейсу битвы. Когда битва закончится, он вернется на карту;
Диалоговое событие : когда герой входит в эту сетку события, он будет использовать объект события для создания диалогового события, и будет иметь некоторые диаловые взаимодействия с героем, филиалами, обмен предметами и т. Д.;
Правила определения события:
1. 事件将在判定允许被移动后,直接执行;
2. 在执行阶段可捕获的参数有: 当前格子对象,目标格子对象,英雄对象
3. 事件必须为一个可执行的函数;
4. 详细可以参考内置事件(event-class.js)
Здесь мы указываем примеры, чтобы объяснить правила определения объектов навыков;
Данные (Skill-data.js, state-data.js), все строковые формы будут преобразованы в исполняемые функции战斗技能释放,计算行动对象时;
пример
{
id: 1000002,
name: '净化',
dsc : '净化中毒效果~',
label : ['测试2','伤害2'],
defaultTime : 3000,
restrict : [
"[attacker]{$mp} >= {60}",
"[attacker]{$hp} <= {250}",
"[attacker]{$skills} nothas {1000003,1000001}",
"[attacker]{$status} has {2000001}",
"[skill]{coolTime} > {0}",
function(skill, attacker, enemy){
return true;
}
],
eventList : [
`[1]enemy@changeHp@attacker.$atk`,
`[2]attacker@changeHp@2`,
`[3]
action@{action.state.isCritical === true};
attacker@{attacker.$hp > (attacker.$hp * 0.5)}
#
enemy@changeState@[{ id: 2000001, state: "ADD" }];
enemy@changeHp@attacker.$atk
`
,
`[4]action@{action.state.isCritical = true}`,
],
// 当为状态时还可以添加下面2个属性;
stateEvent : function(hero) {
var self = this;
var duration = 5;
var per = 1;
var current = 1;
self.stateEventTimer = setInterval(function(){
hero.changeHp(-30);
current +=1;
if(current > 5){
clearInterval(self.stateEventTimer);
hero.removeList('$status',self);
}
}, per * 1000);
this.actived = true;
},
powerUp : {
$maxHp : [0,0,0,0],
},
},
| ключ | ценить | DSC |
|---|---|---|
| идентификатор | Число | Уникальная идентификация навыка |
| имя | Нить | Название навыка |
| этикетка | [Нить] | Теги навыков |
| время дефолта | Число | Время восстановления навыка, единица миллисекундов |
| ограничивать | [Строка или функция] | Предварительное условие для выпуска навыков. При анализе в качестве функции он может получить доступ к 3 параметрам,技能,攻击者и被攻击者. Когда функция возвращает истину, это правило передается. Правила разрешения строки: [对象]{属性名1} 标识符{值} , поддержка идентификатора > < >= <= nothas has |
| Eventlist | [Строка или функция] | Список событий может быть функцией, которая принимает 3 параметры,行动对象, злоумышленник,攻击者,被攻击者, правила анализа формы строки [权重]参数名@{前置条件语句}#参数名@事件@事件参数, необходимо использовать несколько элементов ; отдельно, и конечная запись не нужно добавлять сепаратор |
| StateeDevent | функция | Непрерывное состояние, эта функция будет выполнена, когда в объект будет добавлено состояние. В этой функции можно получить доступ к устройству, и некоторая обработка выполнена. |
| Powerup | объект | Улучшение атрибутов, вызванное состоянием, анализ значений массива, [值, 类型: 0:基础值1:基础百分2:高级值3:高级百分] , формула расчета атрибутов ((默认+ 基础值) * (1 + 基础百分) + 高级值) * (1 + 高级百分) |
Поздравляю, теперь вы можете создать собственный навык
// 装备
{
id: 30000012,
name: '精致的铁剑',
level: 1,
grade: 1,
equipType : 0,
label: [
'武器'
],
intensify : 1,
intPowerUp : {
$atk: 123
},
equip : {
$def: 2,
$atk: 15,
$maxHp : 5,
$maxMp : 5,
},
dsc : '用野草编制的手镯'
}
// 物品
{
id: 3000001,
name: '野草',
pile : true,
price : 10,
use : {
defaultTime : 1000,
restrict :[
function(){
return this.$hp > 500;
}
],
effect :[
function(){
this.changeHp(30);
}
]
},
label : [
'材料'
],
dsc : '很常见的东西,或许能用来做一些东西'
},
| ключ | ценить | DSC |
|---|---|---|
| уровень | Число | Уровень оборудования |
| оценка | Число | Оценка оборудования白0 ,绿1 ,蓝2 ,紫3 ,橙4 |
| оборудование | Число | 武器0 ,护肩1 ,鞋子2 ,腰带3 ,上衣4 ,绑腿5 ,戒指6 ,项链7 ,手镯8 , |
| оборудовать | объект | Значение параметра атрибута оборудования совпадает с Powerup状态. |
| Интенсивность | Число | Укрепление уровня |
| IntPowerUp | Объект | Бафф, принесенный усилением, составляет $atk , а остальная часть брони - это $dmgDown (процентное снижение ущерба) |
| куча | Логический | Можно ли наложить на работу |
| цена | Число | Значение элемента |
| Использовать | объект | Эффект элемента может использоваться defaultTime :冷却时间, restrict 前置条件列表,接受函数为单个条件,this指向使用者, effect 造成的效果列表,接受函数为单个事件,this指向使用者 |
| Как насчет этого? Узнали ли вы, что вы все еще не можете создать свое собственное оборудование - это не имеет значения, это потому, что я не выражал его хорошо ~ |