> Tutoriel
Nous avons déjà utilisé plusieurs fonctions et méthodes (setWeapon, moveToward, etc.). Il est aussi possible de créer ses fonctions personnelles, avec la syntaxe suivante :
functionsomme( x, y ){ return x + y }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.
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 :
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.
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, la méthode me.weaponCells(enemy) renvoie toutes les cellules possibles pour utiliser votre 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 of pour calculer la cellule dont la distance avec nous est la plus courte :
On l'utilise pour remplacer le déplacement :
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 suivants nous aborderons des aspects plus difficiles, donc prenez le temps de jouer avec vos fonctions et les notions que nous avons vues, qui sont déjà suffisantes pour monter dans le classement !
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) { let maxi = -99999 for (const e of liste) { if (e > maxi) { maxi = e } } return maxi } function maximum(liste) { let maxi = 99999 for (const e of liste) { if (e < maxi) { maxi = e } } return maxi } function maximum(liste) { let maxi = 99999 for (const e of liste) { if (e > maxi) { maxi = e } } return maxi } function maximum(liste) { let maxi = -99999 for (const e of liste) { if (e < maxi) { maxi = e } } return maxi }
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.