JeuWeb - Crée ton jeu par navigateur
[étape 1] RPG tactique isométrique -> création de la map - 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 : [étape 1] RPG tactique isométrique -> création de la map (/showthread.php?tid=2357)

Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13


RE: RPG tactique isométrique [ étape 1->création de la map ] - X-ZoD - 23-02-2008

bha vie -_-
c'est ca ... pkoi tu pourai deplacer la carte et pas le joueur ? Big Grin
dark vengeur j'aime bien ta carte ... elle fait plutot realiste .. j'ai faiili en etre jaloux mais je me susi rendu compte que c'etait pas le meme univers ^^


RE: RPG tactique isométrique [ étape 1->création de la map ] - Eluox - 23-02-2008

T'veux le code source ?
xD


RE: RPG tactique isométrique [ étape 1->création de la map ] - X-ZoD - 24-02-2008

heu po trop non .. j'ai deja trop de taff ^^ je decode un code soruce par semaine ^^


RE: [étape 1] RPG tactique isométrique -> création de la map - Julien_k - 01-03-2008

Salut tout le monde !

Voilà, j'ai repris le code de dark vengeur, utilisant uniquement le php pour générer une map, et, j'ai essayé de l'améliorer un petit peu (j'ai amélioré un petit peu la clarté, en mettant toutes les valeurs dans des variables). Bref, j'ai essayé d'introduire le 2nd tuto dedans, pour pouvoir se déplacer sur la map, et j'ai essayé de traficoter le javascript, mais je n'y suis pas trop arrivé (je n'ai presque aucune connaissance dans ce domaine ^^).

J'ai donc décidé de tout faire en php. Cela à plutôt bien marché, seulement, il y a un problème, les coordonnées du personnage se changent bien, mais je n'arrive pas à trouver une formule permettant de mettre le perso sur la map, au bon endroit, et sur la bonne "case".

Voici le code, en espérant que vous pourrez trouver la solution. Je suis presque sûr qu'elle est évidente, mais voilà, je sèche ! ^^


Code PHP :
<?
$longueur_herbe
= 54; // longueur image sol
$largeur_herbe = 27; // largeur image sol
$src_img_herbe = 'maps/carreau_iso_herbe_grand.png'; // url image sol

$longueur_perso = 21; // longueur image perso
$largeur_perso = 41; // largeur image perso
$src_img_perso = 'maps/perso.png'; // url image perso

$margin_left_base = 500; // margin-left de la 1ere image sol
$margin_top_base = 20; // margin-top de la 1ere image sol

$margin_left_perso_base = $margin_left_base + ($longueur_perso)*2; // margin-left de base de l'image du perso
$margin_top_perso_base = ceil($margin_top_base /2); // margin-top de base de l'image du perso

$ligne = 20; // nombre de lignes voulues pour la map
$colonne = 20 ;// nombre de colonnes

echo '<div>';
$ligne_actuel = 1;
$colonne_actuel = 1;

while (
$colonne != $colonne_actuel - 1)
{
$margin_left = $margin_left_base;
$margin_top = $margin_top_base;

if (isset(
$_GET['px'])) //si position X existe (donc position Y existe aussi)
{
$px = $_GET['px']; // position X
$py = $_GET['py']; // position Y
$margin_left_perso_base = $px* $longueur_herbe; // la je sèche !!!!
$margin_top_perso_base = $py* $largeur_herbe; // ici aussi !!!
}
while (
$ligne != $ligne_actuel - 1)
{
$margin_left += ceil($longueur_herbe/2);
$margin_top += ceil($largeur_herbe/2);
echo
'<a href="?px='.$colonne_actuel.'&amp;py='.$ligne_actuel.'">
<img border="0" id="sol" src="'
.$src_img_herbe.'" title='.$colonne_actuel.':'.$ligne_actuel.'
alt='
.$colonne_actuel.':'.$ligne_actuel.' style="margin-left:' . $margin_left . 'px; margin-top:' . $margin_top . 'px;
float:left; position:absolute; z-index:10;">
</a>'
;
$ligne_actuel++;
}

$margin_left_base -= ceil($longueur_herbe/2);
$margin_top_base += ceil($largeur_herbe/2);
$ligne_actuel = 1;
$colonne_actuel++;
}

echo
'<img src="'.$src_img_perso.'"
style="margin-left:'
.$margin_left_perso_base.'px;
margin-top:'
.$margin_top_perso_base.'px;
float:left; position:absolute; z-index:100;>'
;

echo
'</div>';
?>

PS: Désolé pour la longueur de la ligne !


RE: [étape 1] RPG tactique isométrique -> création de la map - Eluox - 01-03-2008

J'ai le même problème,

je n'ai aucune idée sur comment placer le perso au bonne endroit Confused


RE: [étape 1] RPG tactique isométrique -> création de la map - X-ZoD - 02-03-2008

le perso n'est pas dans une case
le perso a lui meme est une div au dessus de la map
ses coordonées dependent de celle de la case au dessus de laquelle elle devrai etre


RE: [étape 1] RPG tactique isométrique -> création de la map - Julien_k - 02-03-2008

C'est bon, j'ai résolu mon problème !!

Merci X-ZoD pour la précision, j'ai rectifié aussi.

Voici donc le code entièrement en PHP pour faire bouger son personnage sur une map :

Code PHP :
<?
$longueur_herbe
= 54; // longueur image sol
$largeur_herbe = 27; // largeur image sol
$src_img_herbe = 'maps/carreau_iso_herbe_grand.png'; // url image sol
$longueur_perso = 21; // longueur image perso
$largeur_perso = 41; // largeur image perso
$src_img_perso = 'maps/perso.png'; // url image perso

$margin_left_base = 500; // margin-left de la 1ere image sol
$margin_top_base = 20; // margin-top de la 1ere image sol

$margin_left_perso_base = $margin_left_base + ($longueur_perso)*2; // margin-left de base de l'image du perso
$margin_top_perso_base = ceil($margin_top_base /2); // margin-top de base de l'image du perso

$ligne = 20; // nombre de lignes voulues pour la map
$colonne = 20 ;// nombre de colonnes

echo '<div>';
$ligne_actuel = 1;
$colonne_actuel = 1;

while (
$colonne != $colonne_actuel - 1)
{
$margin_left = $margin_left_base;
$margin_top = $margin_top_base;

while (
$ligne != $ligne_actuel - 1)
{
$margin_left += ceil($longueur_herbe/2);
$margin_top += ceil($largeur_herbe/2);
echo
'<a href="?p='.$colonne_actuel.':'.$ligne_actuel.'&amp;mgleft='.$margin_left.'&amp;mgtop='.$margin_top.' ">
// Création de 2 variables mgleft et mgtop, transmises par méthode GET,
// contenant le margin-left et le margin-top de chaque carré de sol
// Ici, la plus grande ligne du premier code, je ne l\'ai pas modifiée.
</a>'
;
$ligne_actuel++;

if (isset(
$_GET['mgleft'])) //si mgleft existe (donc mgtop existe aussi)
{
$px = $_GET['mgleft']; // position X
$py = $_GET['mgtop']; // position Y
$margin_left_perso_base = $px + $longueur_herbe/2 - $longueur_perso /2; // la bonne formule !! ^^
$margin_top_perso_base = $py + $largeur_herbe/2 - $largeur_perso; // ici aussi ! le personnage est centré au milieu de la case voulue.
}
}

$margin_left_base -= ceil($longueur_herbe/2);
$margin_top_base += ceil($largeur_herbe/2);
$ligne_actuel = 1;
$colonne_actuel++;
}

echo
'<div style="margin-left:'.$margin_left_perso_base.'px;
margin-top:'
.$margin_top_perso_base.'px;
float:left; position:absolute; z-index:100;">'
;
echo
'<img src="'.$src_img_perso.'">';
echo
'</div>';

echo
'</div>';
?>

Il demeure néanmoins un problème. Chaque image est en fait un rectangle, et chaque rectangle se chevauche, ce qui fait que lorsque l'on clique sur le bas
d'un losange on se retrouve soit à droite soit à gauche... Quelqu'un pourrait-il m'expliquer comment faire pour régler ce problème ?

Au fait merci beaucoup X-ZoD pour ces tutos !! Il sont parfaits ! Très bien expliqués, et surtout, ils fonctionnent !! ^^


RE: [étape 1] RPG tactique isométrique -> création de la map - X-ZoD - 02-03-2008

pas de soucis Wink


RE: [étape 1] RPG tactique isométrique -> création de la map - MaXimA - 03-03-2008

Julien_k a écrit :Il demeure néanmoins un problème. Chaque image est en fait un rectangle, et chaque rectangle se chevauche, ce qui fait que lorsque l'on clique sur le bas
d'un losange on se retrouve soit à droite soit à gauche... Quelqu'un pourrait-il m'expliquer comment faire pour régler ce problème ?

X-Zod va le dire dans son prochain tuto ^^ en plus je l'ai déja demander sur un autre sujet
allez jte donne une piste : http://www.startyourdev.com/HTML/Balise-AREA.html
Voila^^ apres cherche un peu tout seul ou attends le prochain tuto lol


RE: [étape 1] RPG tactique isométrique -> création de la map - X-ZoD - 03-03-2008

lol Big Grin