JeuWeb - Crée ton jeu par navigateur
Optimiser une map - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Optimiser une map (/showthread.php?tid=744)

Pages : 1 2


RE: Optimiser une map - gtsoul - 03-02-2007

Faut réfléchir un peu avant de lancer des requetes à tout va (un requete sans WHERE c'est toujours bizarre)

je vois ca :
Code PHP :
<?php 
$latmax
= $infosperso['latitude'] + 3;
$longmax = $infosperso['longitude'] + 5;
$latmin = $infosperso['latitude'] - 3;
$longmin = $infosperso['longitude'] - 5;
Cela doit se répercuter dans le code
Code PHP :
<?php 
$joueurs_sql
= doquery("SELECT avatar,latitude, longitude FROM {{table}} WHERE latitude<=$latmax AND latitude>=$latmin AND longitude<=$longmax AND longitude>=$longmin ORDER BY latitude, longitude LIMIT 1", "users");

$last_long = $longmin;
$last_lat = $latmin;
while(
$infos = $joueurs_sql->fetch_assoc())
{
while(
$last_lat<$infos['latitude'])
{
// on rajoute une colonne vide au tableau
$last_lat++;
while(
$last_long<$infos['longitude'])
{
//on rajoute une ligne vide au tableau
$last_long++;
}
}
//on arrive à une case pleine
//on affiche l'avatar du perso
}

Voilà l'idée en gros, on charge tous les persos présents d'un coup. Puis pour chaque case, on regarde si elle est vide ou si les coordonnées sont égales à la ligne suivante de la requete (auquel cas, il y a quelqu'un dessus); et on affiche en conséquence.
J'ai peut-être confondu latitude et longitude (suis mauvais en géographie), et j'aime pas les tableaux aussi j'ai pas fait le code en entier (il faut placer les <tr> et les <td> au bon endroit.
Mais ca permet de tout traiter en une seule requete et une seule itération.
bon travail