RPG
RECHERCHE
Actualités
  • Jeux Vidéos
  • Jeux en ligne
  • Web
  • Tutoriels
  • Tutoriels Flash
  • Tutoriels PHP
  • Tutoriels Java
  • Jeux
  • Jeux Flash
  • Jeux en ligne
  • Téléchargement
  • Communication
  • Forum
  • Tchat
  • Blogs
  • Contact
  • Partenaires
    Jeux Flash
    Jeu de Garcon
    Jeu de Moto
    Jeux Gratuits
    Comptoir du Net
    Xevonaute

    Gestion d'une map PHP

    1 \ Introduction

    Pour afficher notre map, on va donc utiliser un petit bout de code de PHP. Le principe est d'afficher ligne par ligne, puis case par case. Dans l'exemple que je vais prendre le long du tuto, je souhaite créer une map pour un jeu de rôle. Cette map se centre automatiquement sur le joueur et affiche tout les autres joueurs autour de lui.

    La table SQL

    Comme je l'ai dit plus haut, on va se baser sur une table SQL, voici le code permettant de la créer:


    Evidemment, je n'ai mis que les champs qui vont nous intéresser, mais vous aurez sûrement besoin d'autres champs Le champ 'skin' sert ici à stocker l'avatar du perso.

    Le code PHP de base

    Ensuite, vient la partie php que vous devez placer à l'endroit où vous souhaitez générer votre map. On va y aller pas à pas. Dans un premier temps, on se connecte à mysql et on récupère les informations du joueur courant (que l'on a par exemple stocké dans une variable de session):



    Récupération des coordonnées

    Maintenant, il va nous falloir récupérer les coordonnées du joueur puis calculer le nombre de case affichées. Dans mon exemple je vais générer une map de 9*9 cases donc 4 cases avant le perso, et 4 après.



    Pourquoi un coup "-" et un coup "+" ? Eh bien c'est simplement que l'on commence 4 cases au dessus et avant le personnage pour finir 4 cases en dessous et après .

    La première boucle

    Une fois qu'on a bien défini nos variables, on peut travailler dessus. Pour afficher la map on va utiliser deux boucles, l'une imbriquée dans l'autre.
    Mais laquelle est imbriquée dans l'autre ?
    La encore, c'est simple, mais il faut quand même y penser, ce sera la boucle d'affichage des abcisses (l'axe des X) qui sera imbriquée dans celle de l'axe des ordonnées. En fait, pour chaque ligne Y, on affiche toutes les cases X (donc 9 cases)
    Voici le code de la première boucle:



    Trop dur non ? Et pas si difficile à comprendre. Notez l'utilisation de la décrémentation, vu qu'on va de haut en bas.

    La seconde boucle

    Maintenant il faut générer chaque case de chaque ligne. Pour cela, on imbrique une deuxième boucle dans la première. Par contre, pour chaque case, il va falloir vérifier si il y a un joueur dessus. Ca c'est facile, une petite requete et un petit if et le tour est joué



    Le code final



    La Présentation

    Vous aurez sans doute remarqué que le résultat affiché n'est vraiment pas très joli.
    Pour faire ça un peu plus joli, on va faire un chouia de CSS.
    vous aurez certainement déjà repéré les éléments sur lesquels on va devoir appliquer nos styles:



    Dans notre cas on va dire qu'il existe 3 skins possibles: Guerrier, Voleur, Mage on aura donc 3 classes .guerrier .voleur et .mage
    Toutes nos cases vont faire 60px pour avoir quelque chose à la fois joli et raisonnable.
    On va dont d'abord définir les lignes et les cases:



    L'image "arene_fond" c'est l'image de fond de vos cases ici elle ressemble à ça :
    Image utilisateur
    Ensuite pour chaque classe on va définir un style rapide pour chaque classe qui permet de définir l'image de fond. On doit encore définir largeur et hauteur pour que notre div occupe bien toute la case.



    Et pour finir, on fait en sorte que le nom soit affiché en dessous du perso et centré. Il faut ici utiliser une petite police car les noms peuvent parfois déborder






    Gestion du déplacement

    Dans cette troisième partie nous allons voir comment gérer le déplacement de personnages sur la map que l'on a appris à générer.
    Pour ça, on va encore une fois utiliser PHP, et aussi mysql, avec la table que l'on a définie dans la toute première partie.
    Je ne parlerai pas ici de la gestion des points d'action, que vous n'êtes pas obligés d'utiliser non plus, vous laissant ainsi le choix de votre méthode de calcul du coût des déplacements. (Enfin, si les PA vous intéressent, un petit MP si vous vous en sortez pas et je me ferai une joie de vous expliquer tout ça !

    Pour commencer, il va nous falloir deux pages: une permettant au joueur de choisir son déplacement, et l'autre qui traite les informations envoyées par le joueur (on peut aussi faire avec un seule page, mais personnelement je trouve ça plus lourd au niveau de la taille en lignes de code des pages)

    La première page
    Celle-ci devra comporter un formulaire pointant sur la seconde, et qui permet au joueur de dire comment il souhaite se déplacer. Ici on va l'appeler play.php par exemple, et elle pointera sur move.php Supposons ici qu'il ait le droit de bouger horizontalement, verticalement et en diagonale. J'utilise un formulaire avec 9 cases comportant des images cliquables qui soumettent automatiquement le formulaire. Chaque image représentant une flèche pointant dans l'une des directions possibles. La case du milieu est remplie avec l'image du personnage du joueur (pour le staïle).



    Vous remarquerez que j'ai employé du javascript, ce qui est loin d'être le plus recommandé pour avoir une accessibilité optimale. Vous pouvez tout à fait employer une autre méthode

    Je préfère vous prévenir immédiatement, le code avec le javascript n'a pas été testé sous IE, alors s'il ne fonctionne pas, utilisez un formulaire normal (avec des boutons radio)

    La page de traitement
    C'est là que ça devient intéressant. Vous aurez remarqué que quand le joueur clique sur une des images, le formulaire envoie une valeur fournie par l'attribut value de la balise input à la page move.php. C'est cette valeur que l'on va exploiter pour gérer le déplacement.

    Commençons par calculer les nouvelles coordonnées du joueur:



    On a donc déjà calculé les nouvelles coordonnées du joueur, et elles sont prêtes à être modifiées. Mais il reste une option, c'est que deux joueurs ne puissent pas se trouver sur la même case.
    Et comment on le vérifie ça ?
    Simple ! On utilise un petit test sur les résultats d'un requête SQL. Comme ça par exemple:



    Le code final



    Et voilà, ce sera tout, le personnage peut bouger
    Reste plus qu'a gérer le coût de ses déplacements, mais ça, c'est pas bien difficile, vous devriez amplement être capables de le faire !
    Notez qu'on fait un echo de $message à la fin du premier if, que sinon, cette variable, elle sert à rien

    Voilà, c'est fini, on s'arrête là.
    Evidemment il est largement améliorable (avec une gestion des éléments de décor par exemple) et configurable, mais vous devriez y arriver
    Bon coding à tous
    MadX du site du zero !!!
     Connexion
     
       
    Se souvenir de moi
    Mot de passe oublié?
    Pas encore inscrit?
    Inscription
    Dernier inscrit Dernier inscrit
    Avatar de yoyoyoyo
    Avatar de jujuki78jujuki78
    Avatar de Lovemy38Lovemy38
    Avatar de ClimClim
    Avatar de joueursir1joueursir1
    Dernier messages sur le forum Derniers Messages Forum
    Bonjour, chacun. Je suis nouveau ici
    Par imagic2009 le Mer Juin 17, 2009 9:43 am
    Héberger votre site web???
    Par lakouille le Mar Juin 02, 2009 10:35 am
    Guerres du Monde
    Par alex57 le Dim Mai 03, 2009 2:54 pm
    Bounty Bay Online
    Par fauvel le Jeu Mar 26, 2009 2:26 am
    TEM La Firme
    Par Aziboul le Dim Mar 08, 2009 10:01 pm
    Dernier inscrit Derniers Blogs actifs
  • RPG online merom's
  • RPG online merom's
  • Blog de lamariestar
  • TCKAlexon
  • Blog de zoro***1997
  • Copyright © 2007 JeuRPG Tous droits réservés.
    flux rss | Informations légales | Miniville

    Partenaires : Relite - Création de jeux | Jeu RPG | Jeux Flash | Recherche Site

    JeuRPG est une communauté sur les jeux rpg et les jeux en ligne.
    Vous trouverez des informations et l'actualité sur les jeux rpg / mmorpg et des tutoriaux pour la création de jeu en ligne.