03-01-2008, 10:58 PM
Citation :Ton tableau est donc à deux dimensions (tableau de tableaux de terrains), et pour accéder à une case on prend $tableau[$y][$x] (tableau de lignes) ou $tableau[$x][$y] (tableau de colonnes) ?
On prend $tableau[$numéro de la case] :heuuu:
Voila le code:
Code PHP :
<?php
echo '
<table class="table_map" cellspacing="0" cellpadding="0">';
$x=0;
while ($x<$hauteur)
{
echo '<tr>';
$y = 0;
while ($y<$largeur)
{
$modul = $x*$largeur+$y;
echo recup_td($r[$modul],$modul,$tab_pos,$tab_objet,$position,$lieu,$quartier,$largeur,$guilde,$groupe,$tab_bat,$tab_case_dep,$tab_decor,$tab_pave,$tab_herbe);
$y++;
}
echo '</tr>';
$x++;
}
echo '</table>';
La fonction recup_td, qui choisi la case à mettre:
Code PHP :
<?php
function recup_td($s,$case,$tab_poss,$tab_objet,$pos_joueur,$lieu,$quartier,$largeur,$guilde,$groupe,$tab_bat,$tab_case_dep,$tab_decor,$tab_pave,$tab_herbe)
{
if (in_array($case,$tab_poss))
{
//selection de l'éventuel joueur sur la case
$sql = mysql_query('SELECT id,pseudo, orientation, groupe, guilde FROM users WHERE position=\''.$case.'\' and quartier=\''.$quartier.'\' and lieu=\''.$lieu.'\' and statut=\'1\'') or die(mysql_error());
$a = mysql_fetch_assoc($sql);
//s'il n'y a pas de joueur, il y a peut être un monstre
if (empty($a['pseudo']))
{ $sql = mysql_query('SELECT id,nom FROM monstre WHERE position=\''.$case.'\' and quartier=\''.$quartier.'\' and lieu=\''.$lieu.'\'') or die(mysql_error());
$i = mysql_fetch_assoc($sql);
$id_monstre = $i['id'];}
}
//contruction des actions possible si le joueur est proche de la case
$action = '';
$titre = '';
if (is_proche($pos_joueur, $case, $largeur,1))
{
//Case sur lesquel il est possible de ce déplacer
if (in_array($s,$tab_case_dep) and $pos_joueur !== $case)
{ $action = '<ul><li><a href=vue.php?dep='.$case.'>Se déplacer (1 PM)</a></li></ul>';
$titre = 'Case de déplacement';}
//BATIMENT s'il est proche d'un batiment
elseif (in_array($s,$tab_bat))
{ $action = '<ul><li><a href=batiment/'.clear_bat($s).'.php>Entrer dans le batiment</a></li></ul>'; }
//Changeur de quartier s'il est proche du point de changement de quartier
elseif ($s === 'quartier_herbe' or $s === 'quartier_pave')
{ $action = 'Selectionnez un quartier:<ul>';
$sql = mysql_query('SELECT quartier FROM liste_quartier WHERE lieu=\''.$lieu.'\'') or die(mysql_error());
while ($t = mysql_fetch_assoc($sql))
{$action .= '<li><a href=vue.php?quartier='.str_replace(' ','%20',$t['quartier']).'>'.$t['quartier'].'</a> (2 PA/6 PM)</li>';}
$action .= '</ul>';
}
//Accès a la zone résidentiel s'il est proche du point d'accès au résidence
elseif ($s === 'residence_herbe' or $s === 'residence_pave')
{
$action = '<a href=vueresidence.php>Accès à la zone résidentiel.</a>';
}
elseif ($s === 'coffre')
{
$action = '<ul><li><a href=residence.php?res='.$quartier.'>Gestion du batiment</a></li></ul>';
}
}
//Action sur un joueur
if (!empty($a['pseudo']) and $pos_joueur !== $case and $s !== 'quartier_herbe' and $s !== 'quartier_pave')
{
$action = '<ul><li><a onclick=popup_profil('.$a['id'].');>Profil</a></li><li><a href=attaque.php?cible='.$a['pseudo'].'>Attaquer</a></li><li><a href=sort.php?cible='.$a['pseudo'].'&type=joueur>Sort/compétence</a></li></ul>';
$titre = create_profil($a['pseudo']);
}
//Action sur un monstre
if (!empty($i['nom']) and $pos_joueur !== $case and $s !== 'quartier_herbe' and $s !== 'quartier_pave')
{
$action = '<ul><li><a href=attaquemonstre.php?cible='.$i['id'].'>Attaquer</a></li><li><a href=sort.php?cible='.$i['id'].'&type=monstre>Sort/compétence</a></li></ul>';
$titre = create_profil_monstre($i['id']);
}
//Action sur soi !
if ($pos_joueur === $case)
{
$action = '<ul><li><a onclick=popup_profil('.$a['id'].');>Profil</a></li><li><a href=sort.php?cible='.$a['pseudo'].'&type=joueur>Sort/compétence sur soi</a></li></ul>';
$titre = 'Votre personnage.';
if (in_array($case,$tab_objet))
{
$sql = mysql_query('SELECT id,objet FROM objet_sol WHERE position = \''.$case.'\' and lieu=\''.$lieu.'\' and quartier=\''.$quartier.'\'') or die(mysql_error());
$action .= '<br /><br /><hr><br />Objet sur la case:<br />';
while ($q = mysql_fetch_assoc($sql))
{ $action .= '<br />'.$q['objet'].' <a href=vue.php?objet='.$q['id'].'> <img src=image_carte/ramasser.gif /> (1 PA)</a>';}
}
//si le joueur est sur un changeur de quartier.
elseif ($s === 'quartier_pave' or $s === 'quartier_herbe')
{
$action .= '<hr><br />Selectionnez un quartier:<ul>';
$sql = mysql_query('SELECT quartier FROM liste_quartier WHERE lieu=\''.$lieu.'\'') or die(mysql_error());
while ($t = mysql_fetch_assoc($sql))
{$action .= '<li><a href=vue.php?quartier='.str_replace(' ','%20',$t['quartier']).'>'.$t['quartier'].'</a> (2 PA/6 PM)</li>';}
$action .= '</ul>';
}
}
//on regarde s'il y a des objets sur la case
if (in_array($case,$tab_objet))
{
$titre .= '<br /><hr><br />Objet sur la case:<br />';
$sql = mysql_query('SELECT objet FROM objet_sol WHERE position = \''.$case.'\' and lieu=\''.$lieu.'\' and quartier=\''.$quartier.'\'') or die(mysql_error());
while ($q = mysql_fetch_assoc($sql))
{ $titre .= '<br />'.$q['objet'];}
if (empty($a['pseudo']) and empty($i['nom']))
{ $bat = '<img src="image_carte/objet_sol.gif" />'; }
}
//BATIMENT s'il y a un batiment on crée l'image
if (in_array($s,$tab_bat))
{
$bat = '<img src="image_carte/bat/'.$s.'.gif" />'; $titre = no_num($s);
}
//Si c'est un changeur de quartier, on crée l'image et on crée les quartier disponible
elseif (($s === 'quartier_pave' or $s === 'quartier_herbe') and $case !== $pos_joueur)
{
$bat = '<img src="image_carte/quartier.gif" />';
$titre = 'Changer de quartier';
$sql = mysql_query('SELECT pseudo FROM users WHERE lieu=\''.$lieu.'\' AND quartier=\''.$quartier.'\' AND position=\''.$case.'\'') or die(mysql_error());
$titre .= '<br /><br /><u>Joueur sur la case</u>:';
while ($a = mysql_fetch_assoc($sql))
{
$titre .= '<br />'.$a['pseudo'];
}
}
//si c'est un point de résurection ob le crée et on affiche les autre joueur qui sont dessus
elseif (($s === 'resu_pave' or $s === 'resu_herbe') and $case !== $pos_joueur)
{
$bat = '<img src="image_carte/resu.gif" />';
$titre = 'Portail de résurection';
$sql = mysql_query('SELECT pseudo FROM users WHERE lieu=\''.$lieu.'\' AND quartier=\''.$quartier.'\' AND position=\''.$case.'\'') or die(mysql_error());
$titre .= '<br /><br /><u>Joueur sur la case</u>:';
while ($a = mysql_fetch_assoc($sql))
{
$titre .= '<br />'.$a['pseudo'];
}
}
//Si c'est l'accès a la zone résidentiel, on la crée
elseif ($s === 'residence_herbe' or $s === 'residence_pave')
{
$bat = '<img src="image_carte/residence.gif" />';
$titre = 'Accès à la zone résidentiel.';
}
elseif ($s === 'coffre')
{ $titre = 'Gestion du batiment'; }
//initialistion de la variable qui contiendra le TD final
$td = '<td ';
//On selectionne le type de fond de la case
//Déclaration
if (in_array($s,$tab_herbe))
{ $td .= 'style="background: url(\'image_carte/herbe.gif\');"'; }
elseif (in_array($s,$tab_pave))
{ $td .= 'style="background: url(\'image_carte/pave.gif\');"'; }
//font eau pour le batiment du port
elseif ($s === 'port2' or $s === 'port4')
{ $td .= 'style="background: url(image_carte/eau.gif);"'; }
//font bord de l'eau pour le batiment du port
elseif ($s === 'port1' or $s === 'port3')
{ $td .= 'style="background: url(image_carte/bord_eau.gif);"'; }
//On afiche la case de déplacement
elseif (in_array($s,$tab_case_dep))
{
$td .= 'style="background: url(\'image_carte/'.$s.'\');"';
}
//mise des actions, on crée le javascript
$td .= ' onMouseOver="return overlib(\''.$titre.'\', SNAPX, 50, SNAPY, 30, CAPTION, \'Position: Y: '.y($case,$largeur).'/X: '.x($case,$largeur).' | distance: '.calcule_distance($pos_joueur,$case,$largeur).'\');" onClick="return overlib(\''.$action.'\', STICKY, CAPTION, \'Action: \');" onMouseOut="return nd();"';
//Ajout de la class
$td .= ' class="map">';
//Selection de l'image au centre
//JOUEUR
//déclaration de la bodure si besoin
//Joueur de la même guilde
if (!empty($a['guilde']) and $a['guilde'] === $guilde)
{$bordure = 'style="border: 1px solid #00FF00;"';}
//Joueur du même groupe de chasse
if (!empty($a['groupe']) and $a['groupe'] === $groupe)
{$bordure = 'style="border: 1px solid #4400ff;"';}
//Joueur en lui même :D
if ($pos_joueur === $case)
{$bordure = 'style="border: 1px solid #FF0000;"';}
//Récupération de l'avatar en fonction de la classe du personnage
switch ($a['orientation']) {
//Guerrier
case 'Guerrier':
$td .= '<img src="image_carte/perso/guerrier.gif" '.$bordure.' />';
//Chevalier
break; case 'Chevalier':
$td .= '<img src="image_carte/perso/chevalier.gif" '.$bordure.' />';
//Paladin
break; case 'Paladin':
$td .= '<img src="image_carte/perso/paladin.gif" '.$bordure.' />';
//Barbare
break; case 'Barbare':
$td .= '<img src="image_carte/perso/barbare.gif" '.$bordure.' />';
//Trompe la mort
break; case 'Trompe la mort':
$td .= '<img src="image_carte/perso/trompelamort.gif" '.$bordure.' />';
//Berserk
break; case 'Berserk':
$td .= '<img src="image_carte/perso/berserk.gif" '.$bordure.' />';
//Assassin
break; case 'Assassin':
$td .= '<img src="image_carte/perso/assassin.gif" '.$bordure.' />';
//Tueur
break; case 'Tueur':
$td .= '<img src="image_carte/perso/tueur.gif" '.$bordure.' />';
//Ombre
break; case 'Ombre':
$td .= '<img src="image_carte/perso/ombre.gif" '.$bordure.' />';
//Rôdeur
break; case 'Rôdeur':
$td .= '<img src="image_carte/perso/rodeur.gif" '.$bordure.' />';
//Pisteur
break; case 'Pisteur':
$td .= '<img src="image_carte/perso/pisteur.gif" '.$bordure.' />';
//Traqueur
break; case 'Traqueur':
$td .= '<img src="image_carte/perso/traqueur.gif" '.$bordure.' />';
//Mage
break; case 'Mage':
$td .= '<img src="image_carte/perso/mage.gif" '.$bordure.' />';
//Nécromant
break; case 'Nécromant':
$td .= '<img src="image_carte/perso/necromant.gif" '.$bordure.' />';
//Elemeantaliste
break; case 'Elémentaliste':
$td .= '<img src="image_carte/perso/elementaliste.gif" '.$bordure.' />';
//Prêtre
break; case 'Prêtre':
$td .= '<img src="image_carte/perso/pretre.gif" '.$bordure.' />';
//Prêtre guerrier
break; case 'Prêtre guerrier':
$td .= '<img src="image_carte/perso/pretreguerrier.gif" '.$bordure.' />';
//Ermite
break; case 'Ermite':
$td .= '<img src="image_carte/perso/ermite.gif" '.$bordure.' />';
}
//Les joueurs qui on réserver un monstre le voie entouré d'un carré bleu
if (!empty($groupe))
{
$sql = mysql_query('SELECT id_monstre FROM groupe WHERE nom=\''.$groupe.'\'') or die(mysql_error());
$zer = mysql_fetch_assoc($sql);
if ($id_monstre === $zer['id_monstre'])
{$bordure = 'style="border: 1px solid #4400ff;"';}
}
//MONSTRE, on affiche le monstre
if (!empty($i['nom']) and $s !== 'quartier_pave' and $s !== 'quartier_herbe')
{ $td .= '<img src="image_carte/monstre/'.clear_bat($i['nom']).'.gif" '.$bordure.' />'; }
//DECOR, on affiche l'éventuel d"cor, (rocher, arbre, tombe...)
elseif (in_array($s,$tab_decor))
{
$td .= '<img src="image_carte/'.$s.'.gif" />';
}
$td .= $bat;
//On referme la TD
$td .= '</td>';
return $td;
}