Lag dine funksjoner (Python)

Lag dine funksjoner

> Opplæring

Lage en funksjon

Vi har allerede brukt flere funksjoner og metoder (setWeapon, moveToward osv.). Du kan også lage dine egne tilpassede funksjoner, med denne syntaksen:

Det valgfrie nøkkelordet return får funksjonen til å returnere en verdi. I eksempelet ovenfor tar funksjonen parameterne x og y og returnerer summen av dem: x + y.

I Python må en funksjon være definert før den brukes. Derfor legger vi funksjonene øverst i filen, før hovedkoden.

Lage en funksjon canFinish(enemy)

Den forrige koden vår for «nådestøt»-betingelsen er ganske lang og vanskelig å gjenbruke, så vi legger den i en funksjon.

Vi lager en egen funksjon canFinish(enemy), som tar en fiende og returnerer en boolsk verdi som sier om vi kan gjøre det av med den eller ikke.

Vi kopierer nådestøt-koden inn i en funksjon, som skrives slik:

Nå kan vi bruke funksjonen canFinish i hovedkoden vår, som blir mye enklere å skrive:

Visste du det? Å flytte kode som forekommer flere ganger, inn i en funksjon kalles faktorisering.

Lage en funksjon getClosestCellToUseWeapon(enemy)

Du har kanskje lagt merke til at for å bruke maskingeværet eller, senere, laseren må du stå på linje med fienden.

Da må du gå til en celle der du kan bruke våpenet, i stedet for bare å gå mot fienden slik som med pistolen.

Til dette returnerer metoden me.weaponCells(enemy) alle cellene der du kan bruke våpenet ditt på et mål. Så må du velge én av dem: den nærmeste!

Så vi lager en funksjon getClosestCellToUseWeapon og bruker en for in-løkke for å finne cellen med kortest avstand til oss:

Vi bruker den i stedet for den gamle forflytningen:

For å få bedre oversikt over terrenget og cellene kan du gjerne bruke taktisk modus ved å trykke på T under en kamp.

I de neste kapitlene tar vi for oss vanskeligere emner, så ta deg tid til å leke med funksjonene dine og begrepene vi har sett: de holder allerede for å klatre på rangeringen!

❓ Quiz

Hvilken funksjon returnerer kvadratet av et tall riktig?

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

Hvilken funksjon beregner maksimum av en liste?

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

Fullstendig AI