JeuWeb - Crée ton jeu par navigateur

Version complète : [étape 1] RPG tactique isométrique -> création de la map
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13
bha vie -_-
c'est ca ... pkoi tu pourai deplacer la carte et pas le joueur ? 1
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 34
T'veux le code source ?
45
heu po trop non .. j'ai deja trop de taff 34 je decode un code soruce par semaine 34
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 34).

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 ! 34


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 !
J'ai le même problème,

je n'ai aucune idée sur comment placer le perso au bonne endroit :s
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
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/$longueur_perso /2// la bonne formule !! ^^
            
$margin_top_perso_base $py $largeur_herbe/$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 !! 34
pas de soucis 16
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 34 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
Voila34 apres cherche un peu tout seul ou attends le prochain tuto lol
lol 1
Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13
URLs de référence