JeuWeb - Crée ton jeu par navigateur
[Résolu]Batiments... - 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 : [Résolu]Batiments... (/showthread.php?tid=420)



[Résolu]Batiments... - Pyl - 12-02-2007

Dans le cadre de la version Alpha 1.1 de mon jeu La Grande Guerre 1914-1918 je désire afficher sur la Map divers type de batiments ( Ferme, Quartiers Généraux, Eglise, etc...) En cliquant sur le batiment les joueurs se trouveront à l'intérieur du batiment et pourront ainsi faire diverses actions tel que dormir, manger ou autres Wink

Seul soucis que j'ai, c'est que je n'arrive pas à afficher mes batiments...
Donc je ne peux pas tester si les batiments sont bien cliquable comme prévue Undecided
Voila donc le script de Toute ma page joué...
Les requetes de selections dans les diverses tables s'effectue à la ligne 43
Et l'affichage des batiments à la ligne 76 et 77

Code PHP :
<?
session_start
();
include(
'zone-page/haut.php');
include(
'zone-page/menu-gauche.php');
include(
'zone-page/droit.php');
include(
'bdd.php');
include(
'reglage.php');
include(
'function.php');

/////Affichage map et insertion////

$requete=0;
$perso=$_SESSION['perso'];
$id=$_SESSION['id'];
if(
$_SESSION['connection'])
{
// on regardesi le perso est inseré sur le jeu
$res = $db->extract_one("SELECT inserer FROM membres WHERE id='$id' ");
$inserer=$res['inserer'];
if(
$inserer=='0') echo '<center>Votre perso n\'est pas encore inseré sur le champ de bataille.<br><br><a href="inserer.php?p=1"> Cliquez-ici pour proceder à son insertion !</center>';
$sql = mysql_query("SELECT perso FROM map WHERE perso='$id'");
$perso =mysql_num_rows($sql);
if(
$perso==0) echo '<br><br><center>Vous n\'êtes actuellement pas sur le front, les raisons possibles sont :<br>-Vous revenez de vacances<br>-Vous avez étè tué<br><br><form action="retour-front.php" method="post"><input type="submit" value="Retourner Au Front"><br><br><img src="/image/front.jpeg">';
else
{
////On verifie que le perso est sur la map
/////////
//affichage de la map
/////////
//debut definition bord map
$minmap=-10;
$maxmap=9;
//fin definition bord map
?>
<TABLE border="0" cellpadding=0 cellspacing=0 bgcolor="#000000" style="font-family:Verdana, Arial, Helvetica, sans-serif; color:#FFFFFF; font-size:11px;">
<?php
$whereperso
=mysql_fetch_array(mysql_query("SELECT m.X,m.Y,p.vision FROM map as m LEFT OUTER JOIN membres as p ON p.id=m.perso WHERE m.perso='$id'"));
$requete++;
$minXvue=$whereperso['X']-$whereperso['vision'];
$minYvue=$whereperso['Y']-$whereperso['vision'];
$maxXvue=$whereperso['X']+$whereperso['vision'];
$maxYvue=$whereperso['Y']+$whereperso['vision'];
$resultall=mysql_query("SELECT c.perso,c.X,c.Y,c.terrain,c.bat,p.joueur_pseudo,p.fichier as natio,t.fichier,t.tnom,b.fichier as batiment,b.nom-batiment,b.lien FROM map as c LEFT OUTER JOIN membres as p ON c.perso=p.id LEFT OUTER JOIN batiments as b ON c.bat=b.id LEFT OUTER JOIN terrain as t ON t.id=c.terrain WHERE X>='$minXvue' and X<='$maxXvue' and Y>='$minYvue' and Y<='$maxYvue' ORDER BY Y DESC,X ASC");
$requete++;
$nbcase=0;
for (
$y=$maxYvue;$y>=$minYvue;$y--)
{for(
$x=$minXvue;$x<=$maxXvue;$x++)
{if(
$x<=$maxmap AND $y<=$maxmap AND $x>=$minmap AND $y>=$minmap)
{
$result1[$x][$y]=mysql_fetch_assoc($resultall);
}
$nbcase++;
}
}
$x=$minXvue-1;
$y=$maxYvue+1;
for (
$case=0;$case<=$nbcase;$case++)
{if(
$x==($minXvue-1) AND $y==($maxYvue+1))
{
?><tr><td valign="middle" align="center" style="padding:2px;">Y\X</td><?php
}
elseif (
$y==$maxYvue+1)
{
?><td valign="middle" align="center" style="padding:2px;"><?php echo $x; ?></td><?php
$case
--;
}
elseif (
$x==$minXvue-1)
{
?><td valign="middle" align="center"><?php echo $y; ?></td><?php
$case
--;
}
elseif(!isset(
$result1[$x][$y]['terrain']))
{
?><td valign="middle" align="center" bgcolor="#111111">&nbsp;</td><?php
}
else
{if(isset(
$result1[$x][$y]['joueur_pseudo']) AND ($result1[$x][$y]['natio']))
{
?><td onclick="windows.open('http://adresse.com/fiche?mat=<?php echo $joueur['mat']; ?>')" valign="middle" background="image/image_terrain/<?php echo $result1[$x][$y]['fichier']; ?>" align="center" bgcolor="#111111" width="50px" height="50px"><img src="image/image_perso/<? echo $result1[$x][$y]['natio']; ?>" title="<?php echo $result1[$x][$y]['joueur_pseudo']; ?>">
</td><?php
}
elseif (isset(
$result1[$x][$y]['batiment']) AND ($result1[$x][$y]['nom_batiment']))
{
?><td valign="middle" background="image/image_terrain/<?php echo $result1[$x][$y]['fichier']; ?>" align="center" bgcolor="#111111" width="50px" height="50px"><a href="batiments/<? echo $result1[$x][$y]['lien']; ?>"><img src="image/image_bat/<? echo $result1[$x][$y]['batiment']; ?>" title="<?php echo $result1[$x][$y]['nom_batiment']; ?>"></a><?php
}
else
{
?><td align="center" background="image/image_terrain/<?php echo $result1[$x][$y]['fichier']; ?>" width="50px" height="50px">&nbsp;</td><?php
}
}
$x++;
if (
$x>$maxXvue)
{
?></tr><?php
$x
=$minXvue-1;
$y--;
if (
$y>=$minYvue)
{
?><tr><?php
}
}
}
?>
</table>
<?php
echo $requete;
//fin
if (isset($_SESSION['message1'])) echo'<br><br><fieldset><legend><font color="gray">Attaques/Soins</font></legend><br>'.$_SESSION['message1'].'</fieldset>';
echo
'<br><br><fieldset><legend><font color="gray">Jeu</font></legend><br>';
echo
'<table><tr><td>'; include('tour.php');
$perso=mysql_fetch_array(mysql_query("SELECT xp,pv,pv_max,mvt,mvt_max,attaque,attaque_max,classe FROM membres WHERE id='$id'"));
$mvt=$perso['mvt'];
$mvtmax=$perso['mvt_max'];
$attaque=$perso['attaque'];
$attaquemax=$perso['attaque_max'];
$classe=$perso['classe'];
$carac='';
$carac.='<br><br><b>Mvt :</b> <i>'.$mvt.' sur '.$mvtmax.'</i><br>';
if(
$classe=='Infirmier')
{
$carac.='<b>Soins :</b> <i>'.$attaque.' sur '.$attaquemax.'</i><br>';
}
else
{
$carac.='<b>Attaques :</b> <i>'.$attaque.' sur '.$attaquemax.'</i><br>';
}
echo
$carac;
echo
'</td><td>';
if(
$classe=='Infirmier')
{
include(
'soigner.php');
}
else
{
include(
'attaque.php');
}
echo
'</td><td>'; include('deplacement.php'); echo'</td></tr></table>';
echo
'</fieldset>';
}
}
else
{
echo
'<center>Il faut se connecter pour accéder à cette partie.</center>';
}



include(
'zone-page/droit2.php');
?>

Merci de votre aide Smile


RE: Batiments... - gtsoul - 12-02-2007

tu fais ta requête que tu stockes dans $resultall
puis sur une double itération $x, $y, tu stockes les lignes résultats dans un double tableau $result1[$x][$y]

et enfin tu refais une itération sur for ($case=0;$case<=$nbcase;$case++) et pas sur $x,$y
alors que tu essayes d'accèder à $result1[$x][$y]['terrain'] : tes valeurs $x, $y restent inchangées.
Bref, c'est tout ce que je vois dans ce gros code pas commenté.

T'as pas envie d'utiliser des objets au lieu de tableaux en 3 dimensions ?


RE: Batiments... - Pyl - 12-02-2007

Je reste sur mes tableaux lol ^^
Mais, sur ce que tu explique, c'est surment pas ça qui est à l'origine de mon probleme, enfin je pense...
Quand je met en place ce script sur mon site, en faite il me réduit ma map et n'affichage pas les terrains et les joueurs... Ca j'ai déjà eux ce probleme quand je voulais mettre les images des persos donc je sais que quand j'arriverais à afficher mes batiments j'aurais plus ce probleme...
Le probleme c'est que je ne comprend pas trop ou c'est que mon probleme d'affichage des batiments survient...


RE: Batiments... - Pyl - 12-02-2007

Probleme résolu !

merci quand même Smile