>VerseTrainer

5. Portée de détection

moyen
structsfondamentaux

Tu codes la détection de portée d'une tourelle de défense placée sur la carte. Pour savoir si elle doit ouvrir le feu sur le joueur, il faut comparer la distance tourelle-joueur à son rayon de détection — mais calculer une vraie distance demande une racine carrée, une opération coûteuse à répéter à chaque frame pour chaque tourelle. Le patron classique en dev jeu vidéo : comparer les distances au carré, ce qui donne le même résultat de comparaison sans jamais calculer de racine.

Le starter te donne un struct point avec deux champs X et Y de type float, qui représente une position sur la carte. Écris une fonction SquaredDistance qui prend quatre float (Ax, Ay, Bx, By — les coordonnées de la tourelle et du joueur), construit deux instances de point, puis renvoie la distance au carré entre elles : (Bx - Ax)² + (By - Ay)².

Exemple

SquaredDistance(0.0, 0.0, 3.0, 4.0) renvoie 25.0 (3² + 4² = 9 + 16 = 25 — c'est le carré de la distance 5, le fameux triangle 3-4-5).

Syntaxe utile : on construit une instance avec point{X := Ax, Y := Ay}, et on lit un champ avec MonPoint.X.

Indices

Chargement de l'éditeur…