JeuWeb - Crée ton jeu par navigateur
pb galaxie - 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 : pb galaxie (/showthread.php?tid=643)



pb galaxie - max - 14-01-2007

bonjour, a partir le la "galaxie méthode carlou" j'essaye de créer ma propre galaxie
pour le moment j'essaye simplement (dans 1 seul système) de créer 15 planètes aléatoirement dans les 49 places que comporte un système.
jusque là c'est simple mais je veu aussi que chaque planète ai une image différente, j'ai 20 images de planètes. et c'est la que ca coince...
j'utilise un switch mais je n'arrive pas a gérer les planètes une par une, toutes les planètes adoptent la meme image...
je vous poste le script, le résultat est visible sur http://www.sunwars.fr/test_galaxie.php
(vous pouvez générer et suprimer le système si ca peut vous aider a comprendre ^^)

Code PHP :
<?php
include ("header.php"); // la connection a la bdd
?>

<?php

$requete
= mysql_query("SELECT * FROM galaxie") or die(mysql_error());
$var = mysql_fetch_array ($requete);
$id = $var['id'];
$galaxie = $var['galaxie'];
$systeme = $var['systeme'];
$position = $var['position'];
$planete = $var['planete'];

//***************************************Changement de vue **********************************

if (isset($_POST['galaxie_select']) and isset($_POST['systeme_select'])) // Si changement de vue // si on a changé de vue, les coordonnee changent
{
$galaxie = $_POST['galaxie_select'];
$systeme = $_POST['systeme_select'];
}
else
//sinon on garde les coordonnees du joueur
{
$galaxie = $galaxie;
$systeme = $systeme;
}
echo
'<form action="test_galaxie.php" method="post">'; // Affichage de la barre de changement de galaxie et systeme
echo 'Galaxie : ';
echo
'<select name="galaxie_select">';// on affiche la selection du systeme, ici 10 pour le test
for($galaxie_select=1;$galaxie_select<=10;$galaxie_select++)
{
if (
$galaxie_select == $galaxie)
{
$selected = 'selected';
}
else
{
$selected = '';
}
echo
'<option value="'.$galaxie_select.'"'.$selected.'>'.$galaxie_select.'</option>';
}
echo
'</select>';
echo
' - Systeme : ';
echo
'<select name="systeme_select">';
for(
$systeme_select=1;$systeme_select<=100;$systeme_select++)
{
if (
$systeme_select == $systeme)
{
$selected = 'selected';
}
else
{
$selected = '';
}
echo
'<option value="'.$systeme_select.'"'.$selected.'>'.$systeme_select.'</option>';
}
echo
'</select>';
echo
'<br><br>';
echo
'<input type="submit" value="Changer de carte"></form>';
// ****************************************fin de l'Affichage de la barre de changement de galaxie et systeme****************************

echo '<br><br><table width="" border="1" cellspacing="0" cellpadding="0" align="center" height="" bgcolor="#000000">';
echo
'<tr align="center" valign="middle" height="64">';//premiere ligne de la table

//on va chercher les autres joueurs presents sur cette galaxie et ce systeme
$sql = mysql_query("SELECT * FROM galaxie WHERE galaxie ='".$galaxie."' AND systeme ='".$systeme."' ORDER BY position DESC") or die(mysql_error());
while (
$data = mysql_fetch_array($sql))
{
if (empty(
$TabMAP[$data['position']]))
$TabMAP[$data['position']] = $data['position']; //je cree un tableau avec les positions
$TabMAP2[$data['position']] = $data['pseudo']; //je cree un tableau avec les pseudos
}
mysql_free_result($sql);
for(
$pos=1;$pos<=49;$pos++)// on definit la taille de la carte - ici 49 cases
{

//************************************recupération des images des planètes*********************

switch ($planete[$pos]) { // on indique sur quelle variable on travaille
// planètes chaudes
case 1:
$planete[$pos]="/chaud/3.gif";
break;
case
2:
$planete[$pos]="/chaud/4.gif";
break;
case
3:
$planete[$pos]="/chaud/4.gif";
break;
case
4:
$planete[$pos]="/chaud/9.gif";
break;
case
5:
$planete[$pos]="/chaud/11.gif";
break;
case
6:
$planete[$pos]="/chaud/12.gif";
break;
case
7:
$planete[$pos]="/chaud/13.gif";
break;
case
8:
$planete[$pos]="/chaud/14.gif";
break;
case
9:
$planete[$pos]="/chaud/17.gif";
break;
case
10:
$planete[$pos]="/chaud/18.gif";
break;
// planètes froides
case 11:
$planete[$pos]="/froid/1.gif";
break;
case
12:
$planete[$pos]="/froid/2.gif";
break;
case
13:
$planete[$pos]="/froid/5.gif";
break;
case
14:
$planete[$pos]="/froid/7.gif";
break;
case
15:
$planete[$pos]="/froid/8.gif";
break;
case
16:
$planete[$pos]="/froid/10.gif";
break;
case
17:
$planete[$pos]="/froid/15.gif";
break;
case
18:
$planete[$pos]="/froid/16.gif";
break;
case
19:
$planete[$pos]="/froid/19.gif";
break;
case
20:
$planete[$pos]="/froid/20.gif";
break;
}


//*****Gestion des fins de lignes*****
if ($pos == 7 or $pos == 14 or $pos == 21 or $pos == 28 or $pos == 35 or $pos == 42)// si on arrive en fin de ligne,on ferme la ligne et on va a la ligne suivante
{
$finligne = '</tr><tr align="center" valign="middle" height="64">';
}
elseif (
$pos == 49)// si on arrive en fin de tableau, on ferme le tableau
{
$finligne = '</tr>';
}
else
//sinon, on reste sur la meme ligne
{
$finligne = '';
}
//*****fin de la Gestion des fins de lignes*****

if ($pos == 25)
{
echo
'<th align="center" valign="middle" width="64" height="64"><img src="soleil.jpg" alt="soleil" height="64" width="64"></th>'.$finligne;
}
elseif(!empty(
$TabMAP[$pos]))
{
echo
'<th align="center" valign="middle" width="64" height="64"><a href="#" class="info"><img src="'.$planète.'" alt='.$TabMAP2[$pos]. 'height="64" width="64"><span>'.$TabMAP2[$pos].'</span></a></th>'.$finligne;
}
else
//sinon on affiche rien
{
echo
'<th align="center" valign="middle" width="64" height="64" >'.$pos.'</th>'.$finligne;
}
}
echo
'</table>'; // on ferme le tableau


//***************************************** remplissage de la galaxie:********************************

if (isset($_POST['generer']))
{
for(
$nbplanete=1;$nbplanete<=15;$nbplanete++)
{
$galaxie=1;
$systeme=1;
$position=mt_rand(0,49);
$planete=mt_rand(1,20);
$nom_de_planete=htmlentities($_POST['nom_de_planete']);
mysql_query("INSERT INTO galaxie VALUES(' ','".$galaxie."','".$systeme."','".$position."','".$planete."')");

}
}

elseif (isset(
$_POST['supprimer']))
{
mysql_query("DELETE FROM galaxie");
}

?>
<p>
<form action="test_galaxie.php" method="post">
<input type="submit" value="generer" name="generer" /><br/>
<input type="submit" value="supprimer" name="supprimer" />
</form>
</p>


<?php
mysql_close
();
?>
</body>
</html>
<?php
include ("footer.php");
?>



RE: pb galaxie - khiguard - 14-01-2007

Je répond vite fait, je peux me tromper :

Je vois que tu met :
$planete = $var['planete'];
Juste après la requete pour charger les planetes de ta base. Hors planete doit donc être un tableau (il y a plusieurs planete).


Dans ta boucle for : le switch, tu met

"switch ($planete) { // on indique sur quelle variable on travaille
...
}"
Tu ne devrais pas mettre l'indicateur de position (ton $pos) sur ta variable planete pour quelle regarde toute les planetes charger. Car avec ce que tu a fait, elle ne prend en compte que le premier, je me trompe?

Ca devrais donner ceci :
Code :
"switch ($planete[$pos]) { // on indique sur quelle variable on travaille
...
}"

Non?
@+


RE: pb galaxie - max - 15-01-2007

ha wai peut etre! j'essaye ce soir j'ai cour là Wink
merci d'avance si ca marche lol


RE: pb galaxie - carlou - 15-01-2007

un array serait peut etre plus simple a la place de ton switch

Code PHP :
<?php 
case 1:
$planète="/chaud/3.gif";
break;
case
2:
$planète="/chaud/4.gif";
break;
case
3:
$planète="/chaud/4.gif";
break;
case
4:
$planète="/chaud/9.gif";
break;
case
5:
$planète="/chaud/11.gif";
break;
case
6:
$planète="/chaud/12.gif";
break;

donnerait
Code PHP :
<?php 
$planète
= array("","chaud/3","chaud/4","chaud/4",...);
<
img src="/<?=$planète[$planete];?>.gif">



RE: pb galaxie - max - 15-01-2007

khiguard j'ai édité mon script mais j'ai pas bien compri ton idée en fait
et carlou c'est plutot de l'optimisation nn? je le ferai a la fin Wink


RE: pb galaxie - max - 15-01-2007

reglé


RE: pb galaxie - carlou - 15-01-2007

khiguard etait pas tres loin de la solution, c'est juste que le switch etait pas fait sur la bonne requette ^^