JeuWeb - Crée ton jeu par navigateur
Système de carte complet par Carlou - 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 : Système de carte complet par Carlou (/showthread.php?tid=30)

Pages : 1 2 3 4 5


RE: une map quasi complete methode carlou^^ - Kassak - 16-02-2007

J'aimerais juste savoir comment faire pour qu'a un certain endroit, par exemple un batiment, le joueur change de map??

Je pense que je vais devoir rajouter une table map avec id_map, mais comment gerer cela a partir du code de ce tuto, modifier pour que se soit une map fixe??

J'ai pensé a une methode barbare qui consiste a faire une page par mappe, mais je pense qu'il y a mieux^^ ( surtout qu'on va arriver a des chiffres de cases astronomiques...)


RE: une map quasi complete methode carlou^^ - carlou - 16-02-2007

j'ai fait un systeme de ce genre
j'ai rajoute un champ map sur la table joueur et avec un sxitch, tu change la redirection de page par exemple


RE: une map quasi complete methode carlou^^ - Kassak - 16-02-2007

Hum moyen que tu m'expliques un ptit peu plus en détails stp?^^


RE: une map quasi complete methode carlou^^ - carlou - 16-02-2007

par exemple dans mon index, j'ai un lien <a href="index?action=move">deplacements</a>

je fais un switch
Code PHP :
<?php 
....
case
"move" :
if (
$data_user['carte'] == 0){
include (
'Game/deplacements.php');
}
elseif (
$data_user['carte'] == 1){
include (
'Game/deplacements2.php');
}
elseif (
$data_user['carte'] == 3){
include (
'Game/prison.php');
}
elseif (
$data_user['carte'] == 4){
include (
'Game/magasin.php');
}
break;
....

bon c'est un systeme pas optimise du tout mais qui fonctionne


RE: une map quasi complete methode carlou^^ - Kassak - 16-02-2007

oki merci je vais tester ca!
Si j'ai bien compris ca fait une page par map?^^

Enfin je vais tester on verra bien...


RE: une map quasi complete methode carlou^^ - Kassak - 17-02-2007

Bon bon....
J'ai fais un systeme comme ca, si le personnage est a la position X et Y, alors je fais un include de la map, qui update la nouvelle position du perso sur la map, ainsi que le code de la map avec les nouvelles dimensions.

Quand je me balade avec mon personnage, et que je vais sur la case X/Y, hop la carte change et mon perso apparait sur la nouvelle mappe. ( D'ailleur pas besoin de faire 50 000 pages^^), mais si je veux me deplacer, je revient a la mappe de depart, mais mon perso est resté sur l'autre mappe, et se balade dans le vent^^


Comment faire pour qu'il reste sur la mappe que je lui ai dit??

Et ou mettre mon include au niveau du code??
Et que mettre dnas mon include? tout le code??
Et aussi je n'ia pas fait de champ map_id.....puis meme si j'en fait un je ne sais comment l'exploiter!

Merci d'avance!


RE: une map quasi complete methode carlou^^ - Byleth - 14-03-2007

Merci beaucoup pour ce tuto, je comprends 90% du code et du raisonnement, mais j'ai une petite faille technique sur les tableaux :

dans la partie

Code PHP :
<?php 
while ($decors=mysql_fetch_array($requete)) {
if (empty(
$TabMAP[$decors['posx']][$decors['posy']]))
{
$TabMAP[$decors['posx']][$decors['posy']]= $decors['image'];}

quelqu'un pourrait m'expliquer les 2/3 ordres permettant de ranger nos données dans le tableau?

Si oui, pourrait il aussi me dire comment je pourrais visualiser le tableau avec un echo?
(echo $TabMAP ça marche?)

enfin dans la partie
Code PHP :
<?php 
$requete
= mysql_query('SELECT type,image,posx,posy FROM decors WHERE posx between '.$xdebut.' and '.$xfin.' AND posy between '.$ydebut.' and '.$xfin.' ORDER BY posx DESC, posy DESC') or die(mysql_error());

On pourrait m'expliquer à quoi sert (précisément) le DESC, c'est pour gagner du temps?

Voilà, merci beaucoup, désolé de vous déranger....


RE: une map quasi complete methode carlou^^ - carlou - 14-03-2007

desc sert a trier par ordre decroissant

pour afficher les tabmap, il faut faire $tabmap[posx][posy] car c'est un array

donc si pas ex tu es en position x12 y 128, il faut faire echo $tabmap[12][128] et il s'affichera ce que tu as mis en tableau pour tabmap

ex:
while ($decors=mysql_fetch_array($requete)) {
$TabMAP[$decors['posx']][$decors['posy']]= $decors['image'];
$TabMAP1[$decors['posx']][$decors['posy']]= $decors['walkable'];
}

vas donner si tu fais echo $tabmap[12][128] => $decors['image'] => mer.png
$tabmap1[12][128] => $decors['walkable'] => vous ne pouvez pas marcher ici


RE: une map quasi complete methode carlou^^ - Byleth - 14-03-2007

Ouai, c'est déjà un peu moins flou, je comprends tout ça, mais c'est pas encore fluide....

Sinon, pour le DESC, je sais très bien ce que c'est, mais quel est son utilité ici?

Sinon, bloque toujours sur cette ligne :
Code PHP :
<?php 
while ($decors=mysql_fetch_array($requete)) {
if (empty(
$TabMAP[$decors['posx']][$decors['posy']]))
$TabMAP[$decors['posx']][$decors['posy']]=$decors['type']; }

je ne comprends pas trop à quoi sert le if et surtout s'il agit sur la ligne juste en dessous car tu n'utilise pas d'accolades...


RE: une map quasi complete methode carlou^^ - blackduty - 12-05-2007

Hello,

Bon, je viens d'essayer ton tuto, il est plutôt bien vu que j'ai quasiment tout compris :hahahaha:

Cependant, je bute sur quelques trucs:

Problème numéro 1

Code PHP :
<?php 
//definition des bords de la map
$i=6;//6 cases avant debordement en haut et a gauche
$j=1;
$k=245;//6 cases avant debordement en bas et a droite
while ($i >=1 and $j<=6 and $k<=250){
        if ($position_x == $i) {$x_debut = $position_x-$taille+$j; $x_fin = $x_fin+$j;}
        if ($position_y == $i) {$y_debut = $position_y-$taille+$j; $y_fin = $y_fin+$j;}
        if ($position_x == $k) {$x_fin = $x_fin-$j; $x_debut = $x_debut-$j;}
        if ($position_y == $k) {$y_fin = $y_fin-$j; $y_debut = $y_debut-$j;}
        $j++;
        $i--;
      $k++;
     }

Si j'ai bien compris, ça a un rapport avec le débordement (j'ai compris cette notion Wink)

Alors une remarque et une question:

Si je met 250 dans la boucle while pour la variable $k
La carte n'est pas centré sur mon perso... mais en 7/7
Si je met 245, c'est centré sur le perso.

Voici la question, d'où sort ce 245 et 250 ?
J'ai pas réussi a comprendre pourquoi cette valeur ?

Je ne pense pas que ce soit normal mais quand j'approche du bord de la carte, je commence a voir les coordonnées négatives. Un probleme sur le débordement donc... mais je n'arrive pas a comprendre pourquoi (ça a surement un rapport avec ce que j'ai quoté Wink. Au passage, la valeur dans la while n'est pas 250 mais 245 chez moi.)

Problème numéro 2

Enfin pour la carte, j'ai constaté que le batiment (le sorte de dome sur le screen. Cf en bas) quand on rentre en collision, on nous dit bien que l'on peut pas y aller et le perso ne bouge pas mais l'image du batiment disparait ?!?
D'après toi, l'erreur pourrait venir d'où dans le code ?

Probleme numéro 3

Sinon mon autre probleme vient de ton script pour l'attaque. J'ai bien compris que le formulaire n'a pas d'effet (en tant que tel pour l'attaque) mais permet juste d'afficher les cibles autour du personnage.

Mon problème est que ça n'affiche strictement rien...
Code PHP :
<?php
/*
Pour les attaques, on vas aller
chercher toutes les positions autour de votre perso
Si votre perso est en 10.10, ov va verifier:
9.9, 9.10, 9.11
10.9, 10.10, 10.11
11.9, 11.10, 11.11
*/
echo '<form action="interface.php" method="post">';
echo
'<select name="attaque_joueur">';

for (
$x=$position_x-1;$x<=$position_x+1;$x++)
{
// tous les x autour du joueur a case -1 et case +1
for ($y=$position_y-1;$y<=$position_y+1;$y++)
{
// tous les y autour du joueur a case -1 et case +1
$sq = mysql_query('SELECT compte FROM personnage WHERE position_x='.$x.' AND position_y='.$y.' ORDER BY position_x DESC,position_y DESC') or die(mysql_error());

while (
$data = mysql_fetch_array($sq))
{
if (!empty(
$data['compte']) and $data['compte'] != $pseudo_joueur)// si on trouve un joueur et que ce n'est biensur pas vous
{
echo
'<option value="'.$data['compte'].'">'.$data['compte'].'</option>'; //on l'affiche
}
}
mysql_free_result($sq);
}
}
echo
'</select><input type="submit" name="attaque" value="Attaquer">'."\n";
echo
'</form>'."\n";
?>

Voila un screen (je sais, c'est moche :p)
http://images0.hiboox.com/images/1907/eh718583.jpg
Et on est le personnage Allemand entre les deux Russes.

Au besoin, je peux fournir le code complet de la page.

Et un grand merci a celui ou ceux qui prendront le temps de m'aider pour comprendre tout ça Smile