(12-02-2009, 07:32 PM)Krak40 a écrit : bon j'ai jeté un oeil,
et je ne comprends pas les parties en gras:
quelqu'un pourrait me dire en français ce que cela veut dire svp ?
pour comprendre la logique, j'ai du mal à visualiser.
Citation :$sql = mysql_query('SELECT batiment, posx, posy, case FROM batiments WHERE posx='.$dirx.' AND posy='.$diry.' ') or die(mysql_error());
while ($data = mysql_fetch_array($sql)) {
if (empty($TabMAP[$data['posx']][$data['posy']]))
{ $TabMAP[$data['posx']][$data['posy']] = $data['batiment']; }
}
mysql_free_result($sql);
On part de deux coordonnées $dirX et $dirY.
La requête dans la table 'batiments' cherche si il y a un ou plusieurs bâtiment en $dirX, $dirY.
Le résultat va être accessible sous forme de tableau, ligne de résultat par ligne de résultat (mysql_fetch_array).
Si il y a un résultat on aura quelque chose comme :
$data = array( batiment => "chateau", posx=>3, posy=>5);
Le but de la petite boucle c'est juste de réordonner les données dans le tableau $tabMAP de façon à avoir.
$TabMAP[3][5] = "chateau";
Mais on fait cette opération uniquement si $TabMAP[3][5] est préalablement vide.
Par exemple si on a plusieurs résultat, avec dans l'ordre:
"chateau", 3, 5
"auberge", 3, 5
On assignera $tabMAP[3][5] = "chateau"; mais audeuxième passage on n'assignera pas la valeur "auberge" parce que le tabMAP[3][5] ne sera pas vide.
C'est peut être aussi pour éviter si on a déjà fait une opération similaire sur les unités, d'afficher un bâtiment par dessus une unité.
Si $tabMAP[3][5]= "unitéX"; on va pas réécraser par le nom du bâtiment.