Bot déplacement by NeeL'; $verbose_mode = 1; if(isset($_POST['taille_x']) && isset($_POST['taille_y']) && is_numeric($_POST['taille_y']) && is_numeric($_POST['taille_x']) ) { $_POST['taille_x'] <= 20 ? $taille_x = $_POST['taille_x'] : $taille_x = 10; $_POST['taille_y'] <= 20 ? $taille_y = $_POST['taille_y'] : $taille_y = 10; } else { $taille_x = 10; $taille_y = 10; } if(isset($_POST['cible'])) { $cible = $_POST['cible']; $cible--; $cible_y = floor($cible / $taille_x); $cible_x = round(fmod($cible, $taille_x)); $coord_cible = array( 'x' => $cible_x, 'y' => $cible_y ); $cible++; } else { $cible = $taille_x * $taille_y; $cib_x = $taille_x - 1; $cib_y = $taille_y - 1; $coord_cible = array( 'x' => $cib_x, 'y' => $cib_y); } if(isset($_POST['base'])) { $base = $_POST['base']; $base--; $base_y = floor($base / $taille_x); $base_x = round(fmod($base, $taille_x)); $position_bot_initiale = array( 'x' => $base_x, 'y' => $base_y); $base++; } else { $base = 1; $position_bot_initiale = array( 'x' => 0, 'y' => 0); } $verbose_display = ''; $position_bot_actuelle = array( 'x' => $position_bot_initiale['x'], 'y' => $position_bot_initiale['y']); $last_action = 0; $tabeul[] = array( 'x' => $position_bot_actuelle['x'], 'y' => $position_bot_actuelle['y']); while($position_bot_actuelle['x'] != $coord_cible['x'] || $position_bot_actuelle['y'] != $coord_cible['y']) { //Peut-on se déplacer en diagonale ? if( $position_bot_actuelle['x'] < $coord_cible['x'] && $position_bot_actuelle['y'] < $coord_cible['y'] || $position_bot_actuelle['x'] < $coord_cible['x'] && $position_bot_actuelle['y'] > $coord_cible['y'] || $position_bot_actuelle['x'] > $coord_cible['x'] && $position_bot_actuelle['y'] < $coord_cible['y'] || $position_bot_actuelle['x'] > $coord_cible['x'] && $position_bot_actuelle['y'] > $coord_cible['y'] ) { if($verbose_mode == 1)$verbose_display .= '/ : '.$position_bot_actuelle['x'].','.$position_bot_actuelle['y']; if($position_bot_actuelle['x'] < $coord_cible['x'] && $position_bot_actuelle['y'] < $coord_cible['y']) { $position_bot_actuelle['y']++; $position_bot_actuelle['x']++; } if($position_bot_actuelle['x'] > $coord_cible['x'] && $position_bot_actuelle['y'] > $coord_cible['y']) { $position_bot_actuelle['y']--; $position_bot_actuelle['x']--; } if($position_bot_actuelle['x'] > $coord_cible['x'] && $position_bot_actuelle['y'] < $coord_cible['y']) { $position_bot_actuelle['y']++; $position_bot_actuelle['x']--; } if($position_bot_actuelle['x'] < $coord_cible['x'] && $position_bot_actuelle['y'] > $coord_cible['y']) { $position_bot_actuelle['y']--; $position_bot_actuelle['x']++; } if($verbose_mode == 1)$verbose_display .= ' -> '.$position_bot_actuelle['x'].','.$position_bot_actuelle['y'].'
'; } // en ordonnée? elseif($position_bot_actuelle['x'] < $coord_cible['x'] && $last_action != 1 || $position_bot_actuelle['x'] > $coord_cible['x'] && $last_action != 1) { if($verbose_mode == 1)$verbose_display .= '- : '.$position_bot_actuelle['x'].','.$position_bot_actuelle['y']; if($position_bot_actuelle['x'] < $coord_cible['x'])$position_bot_actuelle['x']++; if($position_bot_actuelle['x'] > $coord_cible['x'])$position_bot_actuelle['x']--; if($verbose_mode == 1)$verbose_display .= ' -> '.$position_bot_actuelle['x'].','.$position_bot_actuelle['y'].'
'; if($position_bot_actuelle['y'] != $coord_cible['y'])$last_action = 1; } // en absicce ? elseif($position_bot_actuelle['y'] < $coord_cible['y'] || $position_bot_actuelle['y'] > $coord_cible['y']) { if($verbose_mode == 1)$verbose_display .= '| : '.$position_bot_actuelle['x'].','.$position_bot_actuelle['y']; if($position_bot_actuelle['y'] < $coord_cible['y'])$position_bot_actuelle['y']++; if($position_bot_actuelle['y'] > $coord_cible['y'])$position_bot_actuelle['y']--; if($verbose_mode == 1)$verbose_display .= ' -> '.$position_bot_actuelle['x'].','.$position_bot_actuelle['y'].'
'; $last_action = 0; } $tabeul[] = array( 'x' => $position_bot_actuelle['x'], 'y' => $position_bot_actuelle['y']); } $case_depart = 1 + $tabeul[0]['x'] * 1 + $tabeul[0]['y'] * $taille_x; $depart = 'style="background-color: green;"'; next($tabeul); while ($value = current($tabeul)) { $case_chemin[] = 1 + $value['x'] * 1 + $value['y'] * $taille_x; next($tabeul); } $chemin = 'style="background-color: orange;"'; $fin = end($tabeul); $case_arrivee = 1 + $fin['x'] * 1 + $fin['y'] * $taille_x; $arrivee = 'style="background-color: red;"'; if($verbose_mode == 1)echo '

'.$verbose_display; $nbr = count($tabeul) - 1; echo '
Nombre de déplacements : '.$nbr.'

'; echo '
'; $taille = $taille_x * $taille_y; $tr = 1; $etr = $taille_x; for ($i = 1; $i <= $taille; $i++) { if($i == $tr ) { echo ''; $tr = $tr + $taille_x; } //si c'est la case de départ / si c'est la case d'arrivée / si c'est une case de chemin / si c'est une case normale // méthode : 1 + y * 5 (pour Y) + x * 1(pour X) if($i == $case_depart) { echo ''; } elseif($i == $case_arrivee) { echo ''; } elseif(in_array ($i, $case_chemin)) { echo ''; } else { echo ''; } if($i == $etr ) { echo ''; $etr = $etr + $taille_x; } } echo '
'.$i.''.$i.''.$i.''.$i.'
'; echo '

Taille du tableau :
X (max 20): Y (max 20):
Définir la Base :
Numéro :
Définir la Cible :
Numéro :
'; ?>