Selection au hasard dans un tableau pas si au hasard
Posté : 30 juil. 2007, 19:14
Bonjour à tous,
Toujours dans le cadre de ma nouvelle fonction de combat pour mon jeu en ligne je vient demander votre aide.
Alors voila il faudrait selectionner un id au hasard dans un tableau en fonction qu'une des variable soit dans tel était
Ca serait comme l'équivalent de SELECT $ar[x] FROM $ar WHERE $ar[X][3] = 1 ORDER BY RAND() pour les array où l'on voudrait un X bien entendu...
En fait ca serait pour mettre dans cette fonction qui en arrive à boucler à l'infini à cause de la selection au hasard par rand (elle ne trouve pas les derniers résultats restants)
------------------------------------ Edit
La solution se trouverai peut être dans ce vieu code que quelqu'un d'ici m'avais concocté il y a quelques années. On pourrait faire une liste des id des deux côtés et à chaque fois qu'une unité meurt on retire son id de la liste. (info une unité meurt quand $nbd1 ou $nbd2 sont incrémentés)
Voila le bout de code en question dont j'ai du mal à saisir le concept.
Toujours dans le cadre de ma nouvelle fonction de combat pour mon jeu en ligne je vient demander votre aide.
Alors voila il faudrait selectionner un id au hasard dans un tableau en fonction qu'une des variable soit dans tel était
Ca serait comme l'équivalent de SELECT $ar[x] FROM $ar WHERE $ar[X][3] = 1 ORDER BY RAND() pour les array où l'on voudrait un X bien entendu...
En fait ca serait pour mettre dans cette fonction qui en arrive à boucler à l'infini à cause de la selection au hasard par rand (elle ne trouve pas les derniers résultats restants)
function atq_confront2 ($ar1, $ar2, $nu1, $nu2)
{
$nbd1 = 0;
$nbd2 = 0;
while($nbd1 < $nu1 AND $nbd2 < $nu2)
{
$rand1 = rand(0, $nu1);
$rand2 = rand(0, $nu2);
if($ar2[$rand2][3] == 1)
{
if($ar1[$rand1][3] == 1)
{
$ar2[$rand2][2] -= $ar1[$rand1][1];
$ar1[$rand1][2] -= $ar2[$rand2][1];
if($ar2[$rand2][2] <= 0) { $ar2[$rand2][3] = 0; $nbd2++;}
if($ar1[$rand1][2] <= 0) { $ar1[$rand1][3] = 0; $nbd1++;}
}
}
}
$arfinal = array();
$arfinal[1] = $ar1;
$arfinal[2] = $ar2;
return ($arfinal);
}
Merci à tous de votre aide!------------------------------------ Edit
La solution se trouverai peut être dans ce vieu code que quelqu'un d'ici m'avais concocté il y a quelques années. On pourrait faire une liste des id des deux côtés et à chaque fois qu'une unité meurt on retire son id de la liste. (info une unité meurt quand $nbd1 ou $nbd2 sont incrémentés)
Voila le bout de code en question dont j'ai du mal à saisir le concept.
$nb = 6; // Longueur du mot de passe
$carAutorises = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$max = strlen($carAutorises)-1;
$motDePasse = null;
for($i=0; $i < $nb; $i++) {
$motDePasse .= $carAutorises{mt_rand(0, $max)};
}