denisc a écrit :En fait, j'ai fait quelques essais de calcul... Ma formule est correcte SAUF pour quelques cases adjacentes...
En fait, elle était fausse pour un sacré paquet de cases, j'ai peur que tu ne redoubles ta troisième ;-)
Blague à part, je te remercie beaucoup, car ton idée de départ était bien bonne, et je n'aurai pas trouvé sans toi :-)
Voilà donc un code qui fonctionne, dans tous les cas, avec une carte comme celle dessinée par Denis. J'espère qu'il pourra servir à d'autres.
Code PHP :
<?php
$dx=abs($ax-$bx);
$dy=abs($ay-$by);
if ( $dx<($dy/2) ){
$delta = $dx;}
else{
if ($ay%2==1){
if ( ($dy%2==1) && (($ax-$bx)>-1) ){
$delta = floor($dy / 2 );}
else{
$delta = ceil($dy / 2 );}}
else{
if ( ($dy%2==1) && (($ax-$bx)<1) ){
$delta = floor($dy / 2 );}
else{
$delta = ceil($dy / 2 );}}}
$resultat=$dx+$dy-$delta;
Encore merci à ceux qui ont bien voulu m'aider. A+