JeuWeb - Crée ton jeu par navigateur
[Réglé]Système de déplacement - 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églé]Système de déplacement (/showthread.php?tid=1420)

Pages : 1 2 3 4


[Réglé]Système de déplacement - Joojo - 06-07-2007

Bonsoir à tous, je viens juste de finir l'affichage de map.

En gros ma table map a a colonnes:
- id de la case
- posX de la case
- posY de la case
- type case permet de savoir si on peut se déplacer dessus ou pas
- lien de l'image pour l'afficher

Dans la table joueur il y aura une colonne qui contiendra l'id de la case qui permet ensuite d'avoir la posX et posY

Bon j'espére que ma logique est pour le moment logique. (h)


Comment est organisé l'affichage de la map:
- il y a deux boucles FOR qui permettent d'fficher les lettre et les chiffres autour de la map
- et ensuite une requête sql par ligne qui selectionne toutes les cases dont Y = 1.

Ce que je veux c'est que le joueur se déplace en cliquant sur les cases comme ce que voit souvent.

Bref voilà le topo, maintenant un peu plus compliqué, je n'arrive pas à me faire un shéma d'un système de déplacement (en php), et cela me gêne un tantinet.

Si quelqu'un peut m'aider se serait sympa.

Merci et bonne soirée. :biere:


RE: Système de déplacement - Mysterarts - 06-07-2007

Bonsoir,
Je suis sur que tout le forum aimerait en savoir plus sur toi ! Pense à te présenter dans la section présentation ^^
Sinon, pout ton problème, j'espère que tu as fouillé un peu sur le forum, car pas mal de sujet traite de cas similiraire...
Sinon, tu pourrais nous préciser où tu bloque un peu plus précisement ?

Mysterarts


RE: Système de déplacement - Byleth - 07-07-2007

En cliquant sur la case, ça veut dire que tu dois faire un calcul pour savoir combien de mouvement ton déplacement te couteras. ça veut dire aussi pleins de calculs compliqués dès que tu peux te déplacer de plusieurs cases car tu ne pourras pas le faire en ligne droite.

Cherche ici, tu trouveras surement quelquechose de déjà fait...


RE: Système de déplacement - Joojo - 07-07-2007




RE: Système de déplacement - Byleth - 07-07-2007

Normalement, lorsque tu affiches tes cases, tu vas chercher dans la BdD toutes celles qui sont comprises entre 4 points (x,y). Puis tu affiches sur ta première lignes tous les x pour un y donné, puis pour le y suivant, etc...

Bref, à ce moment là, tu as quelquechose du genre case[$x][$y] à afficher. Donc à ce moment là, quand tu affiches une case, tu connais aussi ses $x et $y. Rien de plus facile donc de laisser les coordonnées quelque part.

C'est ça que tu cherches? ou bien je me trompe complêtement ^^ enfin, si tu veux que j'approfondisse, demande moi.


RE: Système de déplacement - Joojo - 08-07-2007

Merci Byleth je te mp au moment venu.

Bon j'ai abondonné pour l'instant li'dée des cases cliquables, pour essayer de faire quelque chose de simple avec juste un lien pour se déplacer en haut, en bas, à gauche et à droite:
http://www.saragat.stools.net/map3.php

Sauf que j'ai fais tous les test possible et ça ne fonctionne pas, j'ai aucune erreur, aucun changement. Je ne comprend pas. :heuuu:


Code PHP :
<?php 
if(isset($_POST['mouvement']))
{
$mouvement = htmlentities($_POST['mouvement']);

//On selectionne l'id de la case ou se situe membre
$position_joueur = mysql_query('SELECT id_case FROM map_membre WHERE login_membre = "'. $_COOKIE['pseudo'] .'"')or die(mysql_error());
$r_position_joueur = mysql_fetch_array($position_joueur);
$id_case = $r_position_joueur['id_case'];

//On selectionne les coodonnes de la case ou se situe le joueur
$coordonnees_case = mysql_query('SELECT posX, posY FROM map WHERE id_case = "'. $id_case .'"')or die(mysql_error());
$r_coordonnees_case = mysql_fetch_array($coordonnees_case);
$posX = $r_coordonnees_case['posX'];
$posY = $r_coordonnnes_case['posY'];

if(
$mouvement == "haut")
{
$nouvelle_position_Y = $posY - 1;
if(
$nouvelle_position_Y >= 1)
{
$a = mysql_query('SELECT id_case FROM map WHERE posX = "'. $posX .'" AND posY = "'. $nouvelle_position_Y .'"')or die(mysql_error());
$b = mysql_fetch_array($a);
$nouvelle_id_case = $b['id_case'];
mysql_query('UPDATE map_membre SET id_case = "'. $nouvelle_id_case .'" WHERE login_membre = "'. $_COOKIE['pseudo'] .'"')or die(mysql_error());
}
else
{
}
}
elseif(
$mouvement == "bas")
{
$nouvelle_position_Y = $posY = 1;
if(
$nouvelle_position_Y <= 2)
{
$a = mysql_query('SELECT id_case FROM map WHERE posX = "'. $posX .'" AND posY = "'. $nouvelle_position_Y .'"')or die(mysql_error());
$b = mysql_fetch_array($a);
$nouvelle_id_case = $b['id_case'];
mysql_query('UPDATE map_membre SET id_case = "'. $nouvelle_id_case .'" WHERE login_membre = "'. $_COOKIE['pseudo'] .'"')or die(mysql_error());
}
else
{
}
}
elseif(
$mouvement == "gauche")
{
$nouvelle_position_X = $posX - 1;
if(
$nouvelle_position_X <= 0)
{
$a = mysql_query('SELECT id_case FROM map WHERE posX = "'. $nouvelle_position_X .'" AND posY = "'. $posY .'"')or die(mysql_error());
$b = mysql_fetch_array($a);
$nouvelle_id_case = $b['id_case'];
mysql_query('UPDATE map_membre SET id_case = "'. $nouvelle_id_case .'" WHERE login_membre = "'. $_COOKIE['pseudo'] .'"')or die(mysql_error());
}
else
{
}
}
elseif(
$mouvement == "droite")
{
$nouvelle_position_X = $posX + 1;
if(
$nouvelle_position_X >= 10)
{
$a = mysql_query('SELECT id_case FROM map WHERE posX = "'. $nouvelle_position_X .'" AND posY = "'. $posY .'"')or die(mysql_error());
$b = mysql_fetch_array($a);
$nouvelle_id_case = $b['id_case'];
mysql_query('UPDATE map_membre SET id_case = "'. $nouvelle_id_case .'" WHERE login_membre = "'. $_COOKIE['pseudo'] .'"')or die(mysql_error());
}
else
{
}
}
else
{
}
}


Et voici les formulaires html (il y a pas de balises html?):

<table align="center">
<tr>
<form method="post" action="map3.php">
<td></td><td><input name='mouvement' type='hidden' value='haut'><input type="submit" value="Allez au Nord" /></td><td></td>
</form>
</tr>
<tr>
<form method="post" action="map3.php">
<td><input name='mouvement' type='hidden' value='gauche'> <input type="submit" value="Allez à l'Ouest" /></td></form><td></td><form method="post" action="map3.php"> <td><input name='mouvement' type='hidden' value='droite'> <input type="submit" value="Allez à l'Est" /></form></td>
</tr>
<tr>
<form method="post" action="map3.php">
<td></td><td><input name='mouvement' type='hidden' value='bas'> <input type="submit" value="Allez au Sud" /></td><td></td>
</form>
</tr>
</table>



edit: le prob vient au moment du calcul....


RE: Système de déplacement - elazard - 08-07-2007

T'as un message d'erreur? parce que le script me parait bien fait (j'ai lu que le php). T'as bien une identification par cookies etc?


RE: Système de déplacement - Joojo - 08-07-2007

J'ai aucun message d'erreur c'est ça le prob. Oui par cookie. J'ai une page contenant la connexion du membre, cookie et je met une include sur chacune de mes pages, ce qui fonctionne sur toutes mes pages.


RE: Système de déplacement - Enyrian - 08-07-2007

Salut !

Je suis actuellement entrain de regarder ça sur le serveur Wink
Serait-il possible de saovoir quand est-ce que ça affiche "Boulet!!!!!" ? Et aussi de savoir où on est (ia pas de bonhomme :heuuuSmile


RE: Système de déplacement - Joojo - 08-07-2007

Mdr excuse moi pour boulet j'ai mit ça pour me stimuler. :hahahaha:

Voilà ou c'est situé:

Code PHP :
<?php 
elseif($mouvement == "droite")
{
$nouvelle_position_X = $posX + 1;
if(
$nouvelle_position_X >= 10)
{
$a = mysql_query('SELECT id_case FROM map WHERE posX = "'. $nouvelle_position_X .'" AND posY = "'. $posY .'"')or die(mysql_error());
$b = mysql_fetch_array($a);
$nouvelle_id_case = $b['id_case'];
mysql_query('UPDATE map_membre SET id_case = "'. $nouvelle_id_case .'" WHERE login_membre = "'. $_COOKIE['pseudo'] .'"')or die(mysql_error());
}
else
{
echo
'Boulet!!!!!';
}
}

Donc cela situe le prob de la condition

Ceux qui sont allé sur mon site le nombre en haut à gauche signifie X et Y ou vous etes situés.