JeuWeb - Crée ton jeu par navigateur
[OK] Génération aléatoire [Placement sur carte ] - 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 : [OK] Génération aléatoire [Placement sur carte ] (/showthread.php?tid=291)



[OK] Génération aléatoire [Placement sur carte ] - Cr@Zy - 03-10-2006

J'ai une question, je désire faire un placement aléatoire d'un personnage joueur sur un carte, lors de son inscription.

Mais visiblement, je ne m'y prend pas de la bonne façons:
Code PHP :
// Selection des Coordonnées X et Y qui sont vide
$coordvideX mysql_query ("SELECT posx FROM membres WHERE posx =''");
$coordvideY mysql_query ("SELECT posy FROM membres WHERE posy =''");
/* Et la je m'arret car en effet, le variable $coordvideX est égale à une multitude de posx vide, non ?
De même pour $coordvideY 
*/ 

Si quelqu'un peut m'orienter sur la façons de m'y faire .... ( Générer un placement X et Y d'un personnage lors de la création d'un compte )

Merci


RE: Génération aléatoire [Placement sur carte ] - Plume - 03-10-2006

En effet, et c'est obligé puisque tu lui demandes la liste des cases qui n'ont rien en abscisse, et une autre liste pour les ordonnées. Déjà pour connaître les cases vides, j'procéderais plutot ainsi:
Code PHP :
$coordVide mysql_query("SELECT posx, posy FROM membres WHERE posy = '' AND  posx = ''"); 
Ensuite pour réussir à placer aléatoirement, j'ai pas d'idées concrètes très optimales, donc je vais pas me prononcer Smile


RE: Génération aléatoire [Placement sur carte ] - phpgamer - 03-10-2006

Code PHP :
$coordVide mysql_query("SELECT posx, posy FROM membres"); 
while (
$vide mysql_fetch_array($coordVide))
{
    
$x mt_rand(1,500);
    
$y mt_rand(1,500); //suivant la taille de ta carte en carré
    
if ($x != $vide['x'] && $y != $vide['y'])
    {
        
mysql_query(INSERT ......
    }




RE: Génération aléatoire [Placement sur carte ] - ddlink - 03-10-2006

salut

mais si c'est egale au coordonnées!!!
ta pas mis de else !!!


RE: Génération aléatoire [Placement sur carte ] - OncleJames - 03-10-2006

!= signifie différents donc si la case est vide on insert les info du perso sinon on passe pas besoin de else puisque en faite on le gere dans la boucle


RE: Génération aléatoire [Placement sur carte ] - LittleQI - 03-10-2006

un petit break après le INSERT ne serais pas mieu? parceque là tu insere a chaque coordonnées vides des la carte, hors on ne veu le faire qu'une fois pour un joueur non?
Sinon une petite requete qui te sort un enregistrement au hasard avec posx='' et posy='':
Code PHP :
$requete="SELECT * FROM membres WHERE posx='' and posy='' ORDER BY rand() LIMIT 0,1;"



RE: Génération aléatoire [Placement sur carte ] - phpgamer - 03-10-2006

Code PHP :
$coordVide mysql_query("SELECT posx, posy FROM membres");
$vide mysql_fetch_array($coordVide);

    
$x mt_rand(1,500);
    
$y mt_rand(1,500); //suivant la taille de ta carte en carré
    
if ($x != $vide['x'] && $y != $vide['y'])
    {
        
mysql_query("INSERT ...... WHERE pseudo='".$pseudo."'");
    } 

Petite mise a jour...Pour un seul personnage Wink


RE: Génération aléatoire [Placement sur carte ] - gtsoul - 03-10-2006

heu ca va peut etre paraitre idiot mais c'est pas UPDATE+RAND qu'il faut utiliser dans ce cas la ?
J'ai un système de ronde pour pnj et ca donne un truc du genre

UPDATE monstre SET x = x_o-$ronde/2+$ronde*RAND, y = y_o-$ronde/2+$ronde*RAND

voilà pour dire que le select est inutile quand on veut modifier/insérer des données

edit: j'ai retrouvé mon script, les monstres font une ronde de rayon `rayon_ronde` autour du point `x_origine`, `y_origine` et le tout en une seule requête (qques ms pour plusieurs milliers de monstres) :
Code :
$bd1->execRequete("UPDATE `monstre_emplacement` SET `x_actuel` = `x_origine_ronde`-`rayon_ronde`+(2*`rayon_ronde`*RAND()), `y_actuel` = `y_origine_ronde`-`rayon_ronde`+(2*`rayon_ronde`*RAND()) WHERE 1");



RE: Génération aléatoire [Placement sur carte ] - Cr@Zy - 03-10-2006

Merci à vous.

>phpgamer il est préférable de faire sa sur des données qui existent ^^
Code PHP :
$coordVide mysql_query("SELECT posx, posy FROM membres");
$vide mysql_fetch_array($coordVide);

    
$x mt_rand(1,250);
    
$y mt_rand(1,250); 
    if (
$x != $vide['posx'] && $y != $vide['posy'])
    {
 
mysql_query("UPDATE membres SET posx='".$x."', posy='".$y."' WHERE pseudo='".$pseudo."'");
    } 

Car $vide['x'] et vide['y'] n'existent pas Wink, je sais je chipotte mais bon ^^ Merci Smile