Source du fichier zn_distance.php :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">
<meta name="KEYWORDS" content="heroes,chronicles,HC,potion,potions,PV,calculateur">
<title>Distance en ZN HC</title>
<?php require_once('common_function.php'); include('designhc.html'); ?>
</head>
<body><?php include 'outils.php' ?>
<div id="title">
<a href="<?php echo query_strip(); ?>"><img src="fp.gif" alt="Lien original" id="accueil" title="Retour au lien original" /></a>
Distance en ZN HC v1.3 <span id="by">(par LittleBoss)</span></div>
<div id="entete">Cet outil permet d'obtenir le nombre de PA minimum pour aller d'une case à une autre en Zone Neutre.
<br />Ne prend pas en compte la muraille, mais prend en compte les téléporteurs.
<br />Synthaxe des positions : 'colonne ligne' (exemple : 40.35, 40-35, 40 35, ...)
<br />Exemple de résultat : <a href="?pos1=55.50&pos2=40.48">clique</a></div>
<?php
if(isset($_GET['pos1']) && isset($_GET['pos2']))
{
// définition des variables
$pos1 = array(); $pos2 = array(); $verif = true;
$firstpos = secur_ent($_GET['pos1']);
$secondpos = secur_ent($_GET['pos2']);
if (preg_match('`(\d+)\D+(\d+)`',$firstpos,$match)) {
$pos1[0] = $match[1]; $pos1[1] = $match[2];
//echo "$match[0] # $match[1] # $match[2]<br />";
if (preg_match('`(\d+)\D+(\d+)`',$secondpos,$match2)) {
$pos2[0] = $match2[1]; $pos2[1] = $match2[2];
}
else $verif = false;
}
else $verif = false;
if ($verif) {
//$pos1 = explode('.',$_GET['pos1']);
//$pos2 = explode('.',$_GET['pos2']);
// distance directe
$dist0[0] = dist($pos1,$pos2); $dist0[1] = 2*$dist0[0];
// définition des téléporteurs :
$tp['SO'] = array(0 => 38, 1 => 53);
$tp['SE'] = array(0 => 53, 1 => 53);
$tp['NO'] = array(0 => 38, 1 => 38);
$tp['NE'] = array(0 => 53, 1 => 38);
$tp['C'] = array(0 => 45, 1 => 45);
// distance du tp le plus proche
//$disttp1 = min(dist($tpso),dist($tpse),dist($tpno),dist($tpne),dist($tpc));
$disttp1[0] = 100; $disttp2[0] = 100;
// distance pos1 aux tp
$cpt = 0;
foreach($tp as $zone => $itp) {
$d = dist($pos1,$itp);
if ($d < $disttp1[0]) {
$disttp1[0] = $d;
$zonetp1 = "$zone";
}
elseif ($d == $disttp1[0]) {
$zonetp1 .= ",$zone";
}
$cpt++;
}
// distance pos2 aux tp
$cpt = 0;
foreach($tp as $zone => $itp) {
$d = dist($itp,$pos2);
if ($d < $disttp2[0]) {
$disttp2[0] = $d;
$zonetp2 = $zone;
}
elseif ($d == $disttp2[0]) {
$zonetp2 .= ",$zone";
}
$cpt++;
}
$disttp1[1] = 2*$disttp1[0]; $disttp2[1] = 2*$disttp2[0];
$distot = $disttp1[1] + $disttp2[1] + 5;
echo "<br />Position $pos1[0],$pos1[1] -> $pos2[0],$pos2[1]";
echo "<br />Distance à pied : $dist0[0] cases ($dist0[1] PA)";
echo "<br />Position 1 -> tp le(s) plus proche(s) $zonetp1 : $disttp1[0] cases ($disttp1[1] PA)";
echo "<br />Position 2 -> tp le(s) plus proche(s) $zonetp2 : $disttp2[0] cases ($disttp2[1] PA)";
echo "<br />Distance entre les deux cases via les tp $zonetp1 => $zonetp2 : $distot PA";
echo "<br /><br />Position des TP :
<br />NO : 38,38 - NE : 53,38
<br />C : 45,45 (central)
<br />SO : 38,53 - SE : 53,53";
}
else echo 'Synthaxe non respectée';
}
elseif (isset($_POST['log'])) {
echo 'Erreur : vous n\'avez pas rempli le log<br />';
}
?>
<form action="<?php echo $_SERVER["REQUEST_URI"]; ?>" method="get">
<p><label title="Premiere case">Position 1 : <input type="text" name="pos1" value='' size=6></label>
<label title="Deuxieme case">Position 2 : <input type="text" name="pos2" value='' size=6></label>
</p><p><input type="submit" value="Valider" /></p>
</form>
<div id="changelog"><br />Changelog :
<br />1.3 :
<br />- Modification graphique
<br />1.2
<br />- Tout caractère séparateur autorisé
</h5>
<?php
function dist(&$p1,&$p2) {
return max(abs($p1[0]-$p2[0]),abs($p1[1]-$p2[1]));
}
?>