![]() |
|
|
||||
|
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 : ![]() 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 !!! |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
flux rss | Informations légales | Miniville 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. |