J'ai du mal à comprendre ton problème exactement. J'ai l'impression que tu appliques directement des formules trigonométriques sans savoir exactement ce que tu cherches à calculer : ça ne peut pas marcher.
Fait un dessin, avec un point P(xp, yp) qui réprésente ton garde. Tu dois connaitre ce point P à chaque instant.
Ensuite, tu as un vecteur direction : là où le garde regarde. Tu dois le connaitre aussi. Le garde voit à une distance de x mètres, soit jusqu'au point M. Son vecteur direction c'est donc le vecteur PM, avec norm(PM) = x.
Ensuite, tu supposes qu'il voit autant en vision périphérique à gauche qu'à droite, et tu centres donc son angle de vision sur le vecteur direction. (note : Ce vecteur direction c'est son vecteur de déplacement si tu considère qu'il ne tourne pas la tête mais qu'il regarde toujours dans la direction de son déplacement). Tu as deux angles de valeur alpha/2 si alpha c'est son angle de vision.
Le point P, le vecteur PM, l'angle alpha, la valeur x, c'est des paramètres de ton algorithme. Ils sont connus au moment où tu dois calculer ton champ de vision. Il va donc faloir trouver une formule qui dépend d'eux.
Voici un schéma rapide :
Maintenant, ta question doit surement être :
comment déterminer si un point quelconque J(jx,jy) représentant le joueur est dans le champ de vision ou pas. Essaye de voir par quel test tu peux répondre à cette question, en utilisant des formules trigonométriques, des produits scalaires, etc. Le but est de répondre oui/non, étant donné des valeurs de P, J, du vecteur PM, de la valeur x, de l'angle alpha. Tu dois utiliser ces valeurs comme parèmètres de ton algo.
On te laisse chercher un peu