09-07-2007, 05:25 PM
(Modification du message : 09-07-2007, 05:40 PM par Obscurantis.)
Bonjour,
Je ne sais pas trop à quoi mène le script donné, mais à la première lecture je ne vois pas où le champ de vision est gérer comme il est demandé ici.
De mon côté je pense qu'il serait préférable en générant la case de vérifier sa distance du personnage au centre. Si elle s'avère plus importante que le champ de vision on met l'image par défaut, sinon on affiche soit le terrain, soit le personnage, etc...
Le calcul de la distance (au cas où) :
Je ne sais pas trop à quoi mène le script donné, mais à la première lecture je ne vois pas où le champ de vision est gérer comme il est demandé ici.
De mon côté je pense qu'il serait préférable en générant la case de vérifier sa distance du personnage au centre. Si elle s'avère plus importante que le champ de vision on met l'image par défaut, sinon on affiche soit le terrain, soit le personnage, etc...
Le calcul de la distance (au cas où) :
Code PHP :
<?php
$x_perso = ... ; // coordonnées x du personnage.
$y_perso = ... ; // coordonnées y du personnage.
$vision = ... ; // distance des cases réellement visibles par le personnage.
$taille_carte = ... ; // taille de la carte affichée.
$x_min = $x_perso + $vision ; // première case à afficher en x.
$y_min = $y_perso + $vision ; // première case à afficher en y.
$x_max = $x_min + $taille_carte ; // dernière case à afficher en x.
$y_max = $y_min + $taille_carte ; // dernière case à afficher en y.
for ($x = $x_min; $x < $x_max; $x++)
{
for ($y = $y_min; $y < $ymax; $y++)
{
$distance = sqrt(pow($x - $x_perso,2) + pow($y - $y_perso,2));
if ($distance <= $vision)
{
// on peut voir ......
}
else
{
// on est aveugle à une telle distance ......
}
}
}
C'est un code simplifier (ne gèere pas les bords, se reporter au tutos pour connaître la méthode) qui permet de déterminer si on peut voir une case ou non. Cependant $x_min, $x_max, $y_min et $y_max restent à paramétrer comme dans le tutorial ou à la guise de l'utilisateur du code.