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



Carte pour jeu php - V1nc3 - 26-06-2007

Dans le cadre de mon jeu je suis en train de créer une carte, mais j'ai un petit souci.

Dans ma bdd j'ai 2 persos,
un en 2/2 l'autre en 0/0
seulement ma carte n'affiche que celui en 2/2.

Voila le code ::

Code PHP :
<?php 
//Initialisation de la taille de la carte a afficher
$x_min = ($_SESSION['perso_'.$perso.'']['coord_x']) - ($_SESSION['perso_'.$perso.'']['vision']);
$x_max = ($_SESSION['perso_'.$perso.'']['coord_x']) + ($_SESSION['perso_'.$perso.'']['vision']);
$y_min = ($_SESSION['perso_'.$perso.'']['coord_y']) - ($_SESSION['perso_'.$perso.'']['vision']);
$y_max = ($_SESSION['perso_'.$perso.'']['coord_y']) + ($_SESSION['perso_'.$perso.'']['vision']);

mysql_connect("localhost", "root", "");
mysql_select_db("jeu_seigneur_des_anneaux");
$resultat = mysql_query("SELECT * FROM profil_joueurs WHERE (coord_x BETWEEN '$x_min' AND '$x_max') AND (coord_y BETWEEN '$y_min' AND '$y_max') ORDER BY coord_y DESC, coord_x");
$persos = mysql_fetch_array($resultat);

for (
$y = $y_max; $y >= $y_min; $y--)
{
$output .="<tr>";
for (
$x = $x_min; $x <= $x_max; $x++)
{
$output .="<td>";
if ((
$persos['coord_x'] == $x) && ($persos['coord_y'] == $y))
{
$output .="<img src=\"images/smileys/un_perso.gif\" />";
}
else
{
$output .="<img src=\"images/terrain/un_terrain.gif\" />";
}
$output .="</td>";
}
$output .="</tr>";
}
$output .="</table>";
mysql_close();



RE: Carte pour jeu php - pascal - 26-06-2007

salut,

ton code ne récupère que la 1ere ligne de résultat sur les persos, donc seul le 1er perso est vu, pas les autres.

A+

Pascal


RE: Carte pour jeu php - V1nc3 - 26-06-2007

Comment ça?
Pas tous compris :$


RE: Carte pour jeu php - pascal - 26-06-2007

la ligne suivante est effectuée une seule fois, avant le parcours de la carte :
Code PHP :
<?php 
$persos
= mysql_fetch_array($resultat);

il faut passer au perso suivant, avec par exemple:

Code PHP :
<?php 
//Initialisation de la taille de la carte a afficher
$x_min = ($_SESSION['perso_'.$perso.'']['coord_x']) - ($_SESSION['perso_'.$perso.'']['vision']);
$x_max = ($_SESSION['perso_'.$perso.'']['coord_x']) + ($_SESSION['perso_'.$perso.'']['vision']);
$y_min = ($_SESSION['perso_'.$perso.'']['coord_y']) - ($_SESSION['perso_'.$perso.'']['vision']);
$y_max = ($_SESSION['perso_'.$perso.'']['coord_y']) + ($_SESSION['perso_'.$perso.'']['vision']);

mysql_connect("localhost", "root", "");
mysql_select_db("jeu_seigneur_des_anneaux");
$resultat = mysql_query("SELECT * FROM profil_joueurs WHERE (coord_x BETWEEN '$x_min' AND '$x_max') AND (coord_y BETWEEN '$y_min' AND '$y_max') ORDER BY coord_y DESC, coord_x");
$persos = mysql_fetch_array($resultat);

for (
$y = $y_max; $y >= $y_min; $y--)
{
$output .="<tr>";
for (
$x = $x_min; $x <= $x_max; $x++)
{
$output .="<td>";
// MODIFICATION DE LA CONDITION
if ( is_array($persos) && ($persos['coord_x'] == $x) && ($persos['coord_y'] == $y))
{
$output .="<img src=\"images/smileys/un_perso.gif\" />";
// ON RECUPERE LA LIGNE SUIVANTE
$persos = mysql_fetch_array($resultat);
}
else
{
$output .="<img src=\"images/terrain/un_terrain.gif\" />";
}
$output .="</td>";
}
$output .="</tr>";
}
$output .="</table>";
mysql_close();

A+

Pascal


RE: Carte pour jeu php - V1nc3 - 26-06-2007

Ah yes, impec!
Ptite question : a quoi sert cette condition : is_array($persos)
(commencé php y'a une semaine moi ^.^)


RE: Carte pour jeu php - V1nc3 - 26-06-2007

J'ai un nouveau probleme maintenant, comme je vais utiliser des images, j'ai besoin que les cases de mon tableau soit coller, mais, pas moyen d'y faire, j'ai essayer des collapse, des border :0 etc...
Rien n'y fais, il existe une solution?


RE: Carte pour jeu php - Zamentur - 26-06-2007

ben si pour que les cellule soit collé il suffit d'un simple border=0 dans <table> ...

sinon la condition is_array sert à savoir si il s'agit d'un tableaux.
Quand tu te pose des question comme çà je te conseille d'aller dans la doc officiel de php ( http://www.php.net/manual/fr/ ) et de taper le nom de ta fonction dans le champs de recherche


RE: Carte pour jeu php - Maegia - 26-06-2007

Essaies <table border="0" cellpadding="0" cellspacing="0">, ou encore, si t'es en css, essaies la propriété "border : collapse".


RE: Carte pour jeu php - Zamentur - 26-06-2007

ah oui j'avais pas vu que les image etait des img...
à noter que tu peux mettre des image en background pour pouvoir par exemple mettre le terrain en dessous du perso dans ce cas.


RE: Carte pour jeu php - V1nc3 - 26-06-2007

J'ai déja essayé les border collapse, =0 (cf mes messages la haut).
Rien n'y fait, le seul moyen, c'est de ne pas utiliser d'images pour les fonds, mais des couleurs, et faire des fonds transparents a mes images de persos et laisser les fonds couleurs de terrains derrières :S