Aller au contenu

Création d'une carte 2D?


bigornot

Sujets conseillés

Bonjour!

Voilà, j'expose mon probleme...

Je voudrais créer une carte interactive.

J'ai donc deux tables, une table map(relief, terrain), et une table special (restaurants, ...).

Chaque table contient :

id(id de l'objet ou du terrain, implementé automatiquement),type(type),nom(nom),img(chemin de l'image associée au terrain),alt(texte alternatif de description),x(position X sur le plan),y(position Y sur le plan).

Chaque position (X,Y) correspond à un terrain, et parfois à un objet (spécial), et même parfois à plusieurs objets!

Voilà mon casse-tete :

Comment, en PHP, afficher sur 9x9 cases l'image terrain et, si il existe, l'image de l'objet (s'il y en a plusieurs, on doit en choisir un aléatoirement et afficher son image)?

Pour l'instant, j'arrive à gérer, grâce à PHP, l'affichage de la carte sur une seule table (map), et une seule dimension (X ou Y) : je n'arrive pas à gérer l'ordre avec x ET y, je n'arrive pas non plus à ne retirer qu'un seul objet de la table à la fois, et encore moins à coordonner les deux.

Cela donne ce code :

<?php
function Map1Dimension($x){
$x1=$x-4;
$where_clause='WHERE ';
while(false){
 $where_clause.='x='.$x1.' ';
 if($x1==$x+4){
 return true;
 }
 else
 {
 $where_clause.='OR ';
 }
$x1++;
}
$query=mysql_query('SELECT img FROM map '.$where_clause.' ORDER BY x DESC LIMIT 0,16');
echo '<table background-color="#fff"><tr>';
while($fetch=mysql_fetch_array($query)){
 echo '<table background="map/'.$fetch['img'].'.gif"><td><!-- <img src="OBJET ALEATOIRE SI IL EXISTE"> --></td></table>';
}
}
?>

Donc voilà...

Ce qui me bloque surtout c'est : comment mettre les deux tables dans fetch, avec une boucle, sachant qu'il y aura donc plusieurs $fetch['img'] par passage de la boucle!

Lien vers le commentaire
Partager sur d’autres sites

ha!

En tritouillant un peu j'ai obtenu ça :

function Map($x,$y){
$x1=$x-4;
$y1=$y-4;
$where_clause='WHERE ';
while(false){
$where_clause.='(x='.$x1.' AND y='.$y1.') ';
if($x1==$x+4){
return true;
}
else
{
$where_clause.='OR ';
}
}
echo 'SELECT img,alt FROM map '.$where_clause.' ORDER BY x,y,id DESC LIMIT 0,1000';
$query=mysql_query('SELECT img,alt FROM map '.$where_clause.' ORDER BY x,y,id DESC LIMIT 0,1000');
$deb=0;
while($fetch=mysql_fetch_array($query)){
if($deb==0){
echo '<table background-color="#000"><tr>';
$deb=1;
}
if($lasty!=$fetch['y']){
$lasty=$fetch['y'];
echo '</tr><tr>';
}
echo '<td><table background="map/'.$fetch['img'].'.gif">';
$query2='SELECT img FROM players WHERE x='.$x1.' AND y='.$y1.' LIMIT 0,1';
$fetch2=mysql_fetch_array(mysql_query($query2));
echo '<tr><td><img src="canevas/'.$fetch['img'].'.jpg" /></td></tr>';
echo '</table></td>';
}

}

Je ne l'ai pas encore testé (il faut que je crée les bases) mais dans l'ensemble, ça devrait marcher...

Seulement ça consommera à mon avis beaucoup...

Donc je suis ouvert quant à toute suggestion sur ce script! ;)

Merci beaucoup!

Modifié par bigornot
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...