Maak je functies (Python)

Maak je eigen functies

> Tutorial

Een functie maken

We hebben al verschillende functies en methodes gebruikt (setWeapon, moveToward enz.). Je kunt ook je eigen functies maken, met de volgende syntaxis:

Het optionele sleutelwoord return laat de functie een waarde teruggeven. In het vorige voorbeeld krijgt de functie de parameters x en y en geeft ze hun som terug: x + y.

In Python moet een functie gedefinieerd zijn voordat je ze gebruikt. Daarom zetten we onze functies bovenaan het bestand, vóór de hoofdcode.

Een functie canFinish(enemy) maken

Onze vorige code voor de "genadeklap"-voorwaarde op de vijand is vrij lang en moeilijk te hergebruiken, dus we zetten hem in een functie.

We maken een eigen functie canFinish(enemy), die een vijand krijgt en een boolean teruggeeft die aangeeft of we hem kunnen afmaken of niet.

We kopiëren de code voor de genadeklap in een functie, die er zo uitziet:

Nu kunnen we onze functie canFinish in onze hoofdcode gebruiken, en dat maakt die veel eenvoudiger om te schrijven:

Wist je dat? Code die meerdere keren voorkomt naar een functie verplaatsen, heet factoriseren.

Een functie getClosestCellToUseWeapon(enemy) maken

Misschien heb je gemerkt dat je voor het Machinegeweer of later de Laser op één lijn met de vijand moet staan.

Je moet dus naar een cel gaan van waaruit je je wapen kunt gebruiken, in plaats van gewoon naar de vijand te bewegen zoals met het Pistool.

Daarvoor geeft de methode me.weaponCells(enemy) alle cellen terug van waaruit je je wapen op een doelwit kunt gebruiken. Daarna moet je er één kiezen: de dichtstbijzijnde!

We maken dus een functie getClosestCellToUseWeapon en gebruiken een for in-lus om de cel te vinden die het dichtst bij ons ligt:

We gebruiken die functie om de verplaatsing te vervangen:

Om het terrein en de cellen beter te zien, kun je tijdens een gevecht de tactische modus gebruiken door op T te drukken.

In de volgende hoofdstukken pakken we moeilijkere onderwerpen aan, dus neem de tijd om te spelen met je functies en de begrippen die we hebben gezien: daarmee kun je al flink stijgen in de ranglijst!

❓ Quiz

Welke functie geeft correct het kwadraat van een getal terug?

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

Welke functie berekent het maximum van een lijst?

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

Volledige AI