Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Необходимо написать функцию onDamage

Данила Марков Ученик (117), на голосовании 1 год назад
Что мы хотим:

1. Функция принимает один аргумент init, это значение инициализации.
Например при первом старте, если не было нанесено урона то оно равно 0.

2. Функция должна возвращать массив, который состоит из двух элементов.
2.1. Первый элемент массива это актуальный урон(он накопительный). Далее
я буду называть этот элемент - (D).
2.2. Второй элемент - функция с одним аргументов. Данная функция
принимает на вход значение наносимого урона. Данный урон должен
увеличивать значение (D). Клиент может менять значение (D),
при взаимодействии с этой функцией.

Пример взаимодействия с данной функцией смотри в функции main.

Я также добавил обработчик на кнопку "Attack". При нажатии на кнопку
мы увидем в консоли сообщение: "Player deal damage: <значение урона>"
Посмотри внимательно на то как клиент взаимодействует с этой функцией.
*/

function onDamage(init) {
throw new Error("onDamage func not implemented");
}

function main() {
try {
const [damage, addDamage] = onDamage(0);

const btn = document.querySelector(".btn");

btn.addEventListener("click", (evt) => {
const playerDamage = 10;
addDamage(playerDamage);
console.log("Player deal damage:", damage.value);
});
} catch (error) {
console.error(error);
}
}

main();
Голосование за лучший ответ
Яков Гото Искусственный Интеллект (320911) 1 год назад
На одном очень твердом месте я видел такие задачи и подобные решения таких задач, особенно если это в рамках обучения.
  
 const attack = document.querySelector('.attack'); 
const force = document.querySelector('.force');
const damage = {
one: force.value,
all: 0
}

force.addEventListener('input', ({target}) => damage.one = target.value);
attack.addEventListener('click', onDamage);

function onDamage() {
damage.all += parseInt(damage.one);
console.log(`%c Урон равен: ${damage.one} ед.`, 'color: red');
console.log(`%c Всего получено урона: ${damage.all}`, 'color: blue');
}
Данила МарковУченик (117) 1 год назад
У меня задача стоит в редактировании только JavaScript не как трогать html я не могу
Яков Гото Искусственный Интеллект (320911) И как тогда выглядит шаблон html, который нельзя менять? У меня непонимание, что подразумевается в задании насчет пользовательского взаимодействия со скриптом. Типа, пользователь менять скрипт не может, то есть, за это должно отвечать какое-то поле. И на это же указывает "damage.value".
Данила МарковУченик (117) 1 год назад
Яков Гото Искусственный Интеллект (320911) Все равно не особо понятно. Но что-то приблизительное получилось сделать в рабочем виде... плюс рандомайзер урона, что логично. И не очень понимаю, зачем в коде используются конструкции для ловли ошибок.
 const monster = document.querySelector('#monster progress'); 
const button = document.querySelector('.btn'); 
 
function onDamage(init) { 
   const user = 0; 
   const hit = user ? user : randDamage(); 
   return [hit, allDamage(hit)]; 
} 
 
function allDamage(hit) { 
   const actual = monster.value - hit; 
   return monster.max - actual; 
} 
 
function randDamage() { 
   const random = Math.random() * (5 - 1 + 1) + 1; 
   return Math.floor( random ); 
}  
dima markovУченик (117) 1 год назад
Дружище спасибо тебе огромное я начинающий в данном деле сам пытался, часов 9-10 вокруг ходил. От души тебе???✊
Похожие вопросы