Создайте свои функции (JavaScript)

Создаём свои функции

> Учебник

Создание функции

Мы уже использовали несколько функций и методов (setWeapon, moveToward и т. д.). Вы можете создавать и свои функции — вот так:

Необязательное ключевое слово return заставляет функцию вернуть значение. В примере выше функция принимает параметры x и y и возвращает их сумму: x + y.

Создаём функцию canFinish(enemy)

Наш прежний код условия «добивания» врага довольно длинный, и его трудно использовать повторно, поэтому вынесем его в функцию.

Создадим собственную функцию canFinish(enemy), которая принимает врага и возвращает булево значение: можем мы его добить или нет.

Копируем код добивания в функцию, вот так:

Теперь функцию canFinish можно использовать в основном коде, и он становится гораздо проще:

А вы знали? Перенос кода, повторяющегося в нескольких местах, в одну функцию называется вынесением в функцию.

Создаём функцию getClosestCellToUseWeapon(enemy)

Вы, наверное, заметили, что для Пулемёта, а позже и для Лазера, нужно стоять на одной линии с врагом.

Значит, придётся идти на клетку, с которой можно применить оружие, а не просто приближаться к врагу, как с Пистолетом.

Для этого метод me.weaponCells(enemy) возвращает все клетки, с которых можно применить оружие к цели. Нам нужно выбрать одну из них — ближайшую!

Создадим функцию getClosestCellToUseWeapon и с помощью цикла for of найдём клетку, ближайшую к нам:

Используем её вместо прежнего перемещения:

Чтобы лучше видеть поле и его клетки, включайте тактический режим клавишей T во время боя.

В следующих главах нас ждут темы посложнее, так что не торопитесь: поэкспериментируйте со своими функциями и уже изученными понятиями — их вполне хватит, чтобы подняться в рейтинге!

❓ Тест

Какая из этих функций правильно возвращает квадрат числа?

function square(x) { return x * x } function square(x) { x * x } function square() { return x * x } fonction square(x) { return x * x }

Какая функция вычисляет максимум списка?

function maximum(list) { let maxi = -99999 for (const e of list) { if (e > maxi) { maxi = e } } return maxi } function maximum(list) { let maxi = 99999 for (const e of list) { if (e < maxi) { maxi = e } } return maxi } function maximum(list) { let maxi = 99999 for (const e of list) { if (e > maxi) { maxi = e } } return maxi } function maximum(list) { let maxi = -99999 for (const e of list) { if (e < maxi) { maxi = e } } return maxi }

Полный код ИИ