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

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

> Учебник

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

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

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

В Python функцию нужно определить до её использования. Поэтому мы размещаем функции в начале файла, перед основным кодом.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

❓ Тест

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

def square(x): return x * x def square(x): x * x def square(): return x * x function square(x): return x * x

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

def maximum(my_list): maxi = -99999 for e in my_list: if e > maxi: maxi = e return maxi def maximum(my_list): maxi = 99999 for e in my_list: if e < maxi: maxi = e return maxi def maximum(my_list): maxi = 99999 for e in my_list: if e > maxi: maxi = e return maxi def maximum(my_list): maxi = -99999 for e in my_list: if e < maxi: maxi = e return maxi

Полный код ИИ