JeuWeb - Crée ton jeu par navigateur

Version complète : eviter les doublons
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
bonjours, j'ai encore amélioré ma créations de galaxie mais j'ai un problème que je n'arrive pas à résoudre...
j'ai 49 cases dans ma galaxie et je positionne aléatoirement 15 planètes dans la galaxie. mais parfois je me retrouve avec 2 planètes sur 1 case...
je crée les planètes avec un do while et je pense qu'a chaque entrée dans la boucle il faut recupérer la valeur précédament entrée dans la bdd pour voir si c'est la meme. mais ca me parrais hyperlourd... et en plus là ca marche pas ^^
je vous poste le script pour voir vos avis:
Code PHP :
<?php 
if (isset($_POST['generer']))
{

$pos=array(0,1,2,6,7,8,10,12,14,16,18,20,24,26,30,32,34,36,38,40,42,43,44,48,49);
$nbplanete=1;

do {
$requete = mysql_query("SELECT * FROM galaxie") or die(mysql_error());
$var = mysql_fetch_array ($requete);
$position_exist= $var['position'];

$galaxie=1;
$systeme=1;
$position=mt_rand(1,49);
if (
$position != $position_exist)
{

if (
$position == 11 or $position == 17 or $position == 19 or $position == 23 or $position == 27 or $position == 31 or $position == 33 or $position == 39)
{
$planete=mt_rand(1,10);
}

elseif(
$position == 3 or $position == 4 or $position == 5 or $position == 9 or $position == 13 or $position == 15 or $position == 21 or $position == 22 or $position == 28 or $position == 29 or $position == 35 or $position == 37 or $position == 41 or $position == 45 or $position == 46 or $position == 47)
{
$planete=mt_rand(11,20);
}

if (
array_search($position, $pos) != true )//si on le trouve pas dans le tableau
{
mysql_query("INSERT INTO galaxie VALUES(' ','".$galaxie."','".$systeme."','".$position."','".$planete."')");
$nbplanete++;
}
}
} while (
$nbplanete<=15);
Tu peux créer un tableau temporaire, et à chaque création de planete, tu parcours ton tableau pour vérifier qu'elle n'y est pas... si elle y est, tu recommence le radom...

genre :

Citation :while(fonction_ planete_ appartient_tableau(...) == TRUE)
{
radom(planete)
}

Bon je ne connais rien en PHP mais en C ca doit marcher ca...

et sinon pour tes
Citation :if($position == 3 or $position == 4 or $position == 5 or $position == 9 or $position == 13 or $position == 15 or $position == 21 or $position == 22 or $position == 28 or $position == 29 or $position == 35 or $position == 37 or $position == 41 or $position == 45 or $position == 46 or $position == 47)

tu ne pourrais pas faire un test avec un modulo ou une parité... enfin un truc moins énumératif...(bon mois je fait que proposer apres tout...)
pour le if($position == 3 or $position == 4 or $position == 5 or $position == 9 or $position == 13 or $position == 15 or $position == 21 or $position == 22 or $position == 28 or $position == 29 or $position == 35 or $position == 37 or $position == 41 or $position == 45 or $position == 46 or $position == 47) c'est prévu mais seulement quand tout marchera ^^
mais.... je comprend pas pk mon truc ne marche pas
essaye quelque chose du genre :
1°)choisis des coordonnées au hazard
2°)fais un sélect sur ce que tu compte insérer.
3°)Si le select te retourne quelque chose, ta planete existe déjà, et recommence le processus au n°1
4°)Sinon, tu insères ta planete

a la place de mettre toutes les positions dans ton code, tu les mettrais pas dans une table? ça permettrait de rajouter des positions sans devoir toucher a ton code.
hum... comment on met résolu sur le titre du topic? mdr