JeuWeb - Crée ton jeu par navigateur
Probleme avec 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 : Probleme avec carte (/showthread.php?tid=3393)



Probleme avec carte - horexas - 07-12-2008

Je suis désolé de poster mais j'ai réfléchis depuis trois jour et je ne comprend d'ou viens le probleme... Je m'explique:
j'ai crée un générateur de case pour créer une carte(voir carte de carlou):
Code PHP :
<?php 
echo '<table border="1" cellspacing="0" cellpadding="0">'."\n";
echo
'<tbody>'."\n";
echo
'<tr><td>&nbsp; x<br>&nbsp;y</td>'."\n";
for(
$x=$x_debut;$x<=$x_fin;$x++) { echo '<td align="center" valign="middle" width="40">'.$x.'</td>'."\n"; }
for (
$y=$y_fin;$y>=$y_debut;$y--){
echo
'<tr ><td align="center" valign="middle" height="40">'.$y.'</td>'."\n";
for(
$x=$x_debut;$x<=$x_fin;$x++) {

// on tape les conditions suivante ( voir point 1 , 2 , 3)
}
echo
'</tr>';
}
echo
'</tbody>', '</table>';
-ensuite en fonction des cases j'affiche une image spécifique:
1.Si on est sur la position du joueur on affiche un carré mauve
Code PHP :
<?php 
if($x==$px && $y==$py){ // POSITION DU JOUEUR
echo '<td><img src="http://imgmaker.tr0n1x.com/image/smiley_perso/mask/carre.png"></td>';
}
2.On recherche dans la table si il y a quelqu'un en la valeur $x et $y
et on affiche l'image si la condition est remplie ( image degradé)
Code PHP :
<?php 
$player
= mysql_query("SELECT posx, posy FROM membre WHERE posx='$x' AND posy='$y'") or die(mysql_error());
$joueur = mysql_fetch_array($player);
if(
$x==$joueur['posx'] AND $y==$joueur['posy']){ //POSITION DES VOISINS
if($x!=$px AND $y!=$py){ // si ce n'est pas soi
echo '<td><img src="http://www.solygotrans.com/img/carre.jpg"></td>';
}
}
3. Si il n'y a rien(carré bleu):
Code PHP :
<?php 
else { //RIEN
echo '<td><img src="http://www.birdinthesky.eu/img/carre_bleu.gif"></td>';
}
En tous on n'a sa:
Code PHP :
<?php 
echo '<table border="1" cellspacing="0" cellpadding="0">'."\n";
echo
'<tbody>'."\n";
echo
'<tr><td>&nbsp; x<br>&nbsp;y</td>'."\n";
for(
$x=$x_debut;$x<=$x_fin;$x++) { echo '<td align="center" valign="middle" width="40">'.$x.'</td>'."\n"; }
for (
$y=$y_fin;$y>=$y_debut;$y--){
echo
'<tr ><td align="center" valign="middle" height="40">'.$y.'</td>'."\n";
for(
$x=$x_debut;$x<=$x_fin;$x++) {
if(
$x==$px && $y==$py){ // POSITION DU JOUEUR
echo '<td><img src="http://imgmaker.tr0n1x.com/image/smiley_perso/mask/carre.png"></td>';
}
$player = mysql_query("SELECT posx, posy FROM membre WHERE posx='$x' AND posy='$y'") or die(mysql_error());
$joueur = mysql_fetch_array($player);
if(
$x==$joueur['posx'] AND $y==$joueur['posy']){ //POSITION DES VOISINS
if($x!=$px AND $y!=$py){
echo
'<td><img src="http://www.solygotrans.com/img/carre.jpg"></td>';
}
}
else {
//RIEN
echo '<td><img src="http://www.birdinthesky.eu/img/carre_bleu.gif"></td>';
}
}
echo
'</tr>';
}
echo
'</tbody>', '</table>';
:!: Voila le probleme: si il y a deux personne dans une meme rangée les personnages ne s'affichent pas et la case est vide : regardez sur mon site( le carré mauve c'est vous et le dégradé de rouge c'est les autres joueurs)


RE: Probleme avec carte - Kassak - 07-12-2008

Personnellement ce code me fait mal aux yeux, mais ce n'est pas le sujet.

Essaye en rajoutant des elseif.

Si joueur echo 1
Sinon si objet echo 2
Sinon si monstre echo 3
sinon echo 4


RE: Probleme avec carte - jo_link_noir - 07-12-2008

C'est vrai que c'est illisible, et si je me trompe Kassak n'est pas le premier à te le dire.

A part ça, remplace if($x!=$px AND $y!=$py) par if($x!=$px OR $y!=$py)

Et sinon, p-t que t'as carte va marcher mais là tu fait 121 requêtes sql et si 2 joueurs se retrouvent sur la même case, tu n'en montre qu'un.
Si je me souvient bien, sur la carte de carlou la requête est à l'extérieur de la boucle, j'comprend pas pourquoi t'as changer, pars que là, ton serveur il va bouffer.


RE: Probleme avec carte - horexas - 08-12-2008

Je ne veux pas changer les position des joueurs je veux juste afficher une carte et le OR ne fonctionnera pas car il faut que ce soit les coordonnées x et y qui soient verifiees et aussi je me la requete dedans car la valeur $x et $y n'existe que dans la boucle pas en dehors...
Merci quand meme


RE: Probleme avec carte - jo_link_noir - 08-12-2008

Bah justement, si $x/$y n'existe pas en dehors de la boucle, tu fait en sorte qui le soient. Tu as dit avoir regarder le tuto de carlou ? Tu peut me dire comment il récupère les joueurs ?