> Учебник
Мы уже использовали несколько функций и методов (setWeapon, moveToward и т. д.). Вы можете создавать и свои функции — вот так:
defadd( x, y ):, а затем ниже и с отступом — блок инструкцийНеобязательное ключевое слово 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
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.