Crie suas funções (Python)

Crie suas funções

> Tutorial

Criar uma função

Já usamos várias funções e métodos (setWeapon, moveToward etc.). Você também pode criar suas próprias funções, com a seguinte sintaxe:

A palavra-chave opcional return faz a função retornar um valor. No exemplo anterior, a função recebe os parâmetros x e y e retorna a soma deles: x + y.

Em Python, uma função precisa ser definida antes de ser usada. Por isso colocamos nossas funções no topo do arquivo, antes do código principal.

Criar uma função canFinish(enemy)

Nosso código anterior para a condição de "finalização" do inimigo é bem longo e difícil de reutilizar, então vamos colocá-lo em uma função.

Vamos criar nossa própria função canFinish(enemy), que recebe um inimigo e retorna um booleano dizendo se conseguimos finalizá-lo ou não.

Copiamos o código de finalização para dentro de uma função, assim:

Agora podemos usar nossa função canFinish no código principal, que fica bem mais simples de escrever:

Você sabia? Mover para uma função um código que aparece várias vezes se chama fatoração.

Criar uma função getClosestCellToUseWeapon(enemy)

Você deve ter notado que, para usar a Metralhadora ou, mais adiante, o Laser, é preciso estar alinhado com o inimigo.

Então você vai precisar ir até uma célula de onde possa usar sua arma, em vez de simplesmente avançar em direção ao inimigo como com a Pistola.

Para isso, o método me.weaponCells(enemy) retorna todas as células de onde você pode usar sua arma em um alvo. Depois é só escolher uma delas: a mais próxima!

Então vamos criar uma função getClosestCellToUseWeapon e usar um loop for in para encontrar a célula que está à menor distância de nós:

Usamos essa função para substituir o movimento:

Para ver melhor o terreno e as células, fique à vontade para usar o modo tático apertando T durante um combate.

Nos próximos capítulos, vamos abordar assuntos mais difíceis, então reserve um tempo para brincar com suas funções e com os conceitos que vimos: eles já bastam para subir no ranking!

❓ Quiz

Qual função retorna corretamente o quadrado de um número?

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

Qual função calcula o máximo de uma lista?

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

IA completa