Je tente de développer un algo pour gérer la visibilité sur un plateau héxadécimal. Dans un premier temps déjà, je code le plateau hexa comme un plateau carré classique, en décalant une colonne sur deux.
Pour déterminer si un obstacle se trouve entre deux cases je procède comme suit :
Code : Tout sélectionner
D = droite passant par les centres des deux cases.
Si D coupe un des 4 côtés de l'obstacle:
-> Oui
Sinon:
-> Non
Fin.Code : Tout sélectionner
Pour chaque case C de la zone carrée définie par [X,Y]:
Si C est un obstacle:
Si C est entre X et Y:
-> Oui
Fin.
Fin.
Fin.
-> NonDémo ici : http://naholyr.free.fr/XHR/map.html
L'obstacle en (6,5) est non déplaçable.
Pour déplacer le "personnage" il suffit de cliquer sur une case.
Globalement ça marche, mais j'ai quelques bugs:
- si on place le personnage en (5,1) ou en (7,1) il y a une case visible en plein milieu de la zone cachée.
- si on place le personnage en (4,1) ça passe à deux cases.
- plus étrange encore, si on le place en (8,1) ça se passe normalement, alors que la symétrie devrait provoquer le même problème en (4,1) qu'en (8,1).
Tout le code JS est dans la source de la page (layerAccess.js n'est pas en cause), c'est développé en objet, donc relativement lisible, mais j'ajouterai les commentaires que je n'ai pas encore mis si ça peut aider.
Si quelqu'un a un début d'idée sur la provenance de ces bugs étranges, je suis preneur