Créer ses fonctions

Créer ses fonctions

> Tutoriel

Créer une fonction

Nous avons déjà utilisé plusieurs fonctions standards (setWeapon, moveToward, etc.). Il est aussi possible de créer ses fonctions personnelles, avec la syntaxe suivante :

Le mot-clé return, optionnel, sert à faire retourner une valeur à la fonction. Dans l'exemple précédent, la fonction prend les paramètres x et y et retourne leur somme : x + y.

Création d'une fonction canFinish(enemy)

Notre code précédent pour la condition de "finish" de l'ennemi est assez grand et peu réutilisable, on va le mettre dans une fonction.

Nous allons créer une fonction personnelle canFinish(enemy), qui prend un ennemi et renvoie un booléen indiquant si on peut le finir ou non.

On recopie le code du finisher dans une fonction qui s'écrit de cette façon :

nota : pensez à spécifier de quelle arme on parle pour que le calcul fonctionne. Aussi, la fonction retourne vrai si vous avez assez de points de tour pour tirer assez de coups sur l'ennemi pour qu'il décède et false si au contraire il va survivre (donc vous pouvez peut-être faire autre chose).

Maintenant, on peut utiliser notre fonction canFinish dans notre code principal pour l'écrire beaucoup plus simplement :

Le saviez-vous ? Déplacer plusieurs fois le même code dans une fonction s'appelle une Factorisation.

Création d'une fonction getClosestCellToUseWeapon(enemy)

Vous avez peut-être vu que pour utiliser l'arme Machine Gun ou plus tard le Laser, vous devez être en ligne avec l'ennemi.

Il faudra donc aller sur une cellule depuis laquelle vous pourrez utiliser votre arme, au lieu de simplement avancer vers l'ennemi comme avec le Pistolet.

Pour cela, il existe la fonction standard getCellsToUseWeapon, qui renvoie toutes les cellules possibles pour utiliser une arme sur une cible. Il va donc falloir en choisir une : la plus proche !

On va donc créer une fonction getClosestCellToUseWeapon et utiliser une boucle for in pour calculer la cellule dont la distance avec nous est la plus courte :

On l'utilise pour remplacer le déplacement moveToward :

Si vous vous sentez à l'aise, vous pouvez coder des fonctions :

Vous pouvez aussi :

Pour mieux voir le terrain et les cellules, n'hésitez pas à utiliser le mode tactique en appuyant sur T en combat.

Dans les chapitres suivant nous allons aborder des aspects plus difficiles donc prenez le temps de jouer avec vos fonctions et les notions que nous avons vu précédement, qui sont déjà suffisantes pour monter dans le classement !

❓ Quizz

Quelle fonction qui renvoie le carré d'un nombre est correcte ?

function carre(x) { return x * x } function carre(x) { x * x } function carre() { return x * x } fonction carre(x) { return x * x }

Quelle fonction calcule le maximum d'une liste ?

function maximum(liste) { var maxi = -99999 for (var e in liste) { if (e > maxi) { maxi = e } } return maxi } function maximum(liste) { var maxi = 99999 for (var e in liste) { if (e < maxi) { maxi = e } } return maxi } function maximum(liste) { var maxi = 99999 for (var e in liste) { if (e > maxi) { maxi = e } } return maxi } function maximum(liste) { var maxi = -99999 for (var e in liste) { if (e < maxi) { maxi = e } } return maxi }

IA complète