Je remets mon code, j'avais oublié les débordements droite gauche.
J'ai ajouré la variable pUnit qui est l'id de la case ou se trouve l'unité
J'ai ajouré la variable pUnit qui est l'id de la case ou se trouve l'unité
Code PHP :
<?php
<script language="javascript">
selectArea(idUnit, mUnit, pUnit, mapLength){}
// On repère ligne la plus haute correspondant à la case traitée
var cRow = pUnit - ((mapLength)*mUnit);
// Boucle sur les ligne
for(var x=-mUnit;x<=mUnit;x++){
//Boucle sur les colonnes
for(var y=-mUnit;y<=mUnit;y++){
//Recup de l'Id à traiter
var cId = cRow+y;
//on vérifie les débordements droite/gauche
if(parseInt(cId/mapLength)==parseInt(cRow/mapLength)){
//Coloriage de la case incluant le test d'existence pour le débordement haut bas
if(loc=document.getElementById(cId)) loc.style.backgroundColor='red';
}
}
// Ligne suivante
cRow+=mapLength;
}
}
</script>
Code teste et validé sur une carte 10x10 avec une capacité de déplacement de 1 puis 2 puis 3 cases et en faisant varier la position de l'unité.