JeuWeb - Crée ton jeu par navigateur
Carte en 3D Isometrique - 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 : Carte en 3D Isometrique (/showthread.php?tid=1154)

Pages : 1 2 3 4 5 6


RE: Carte en 3D Isometrique - barst - 15-05-2007

Ne regarde pas dans le CSS mais plutôt dans le fichier générant le HTML.
TU devrais voir que les div générés ont un attribut style décrivant en interne un positionnement en "absolute".


RE: Carte en 3D Isometrique - OncleJames - 15-05-2007

Comment les positionné sans passer par les positions absolue ?

Il est possible de généré un tableau, mais c'est pas vraiment top comme solution.


RE: Carte en 3D Isometrique - blackduty - 15-05-2007

Bon, je suis enfin rentré chez moi et tu peux dire que tu as de la chance (a part si tu ne lis pas l'anglais :hahahahaSmile

Voila, ce que j'avais trouvé a une époque en cherchant des explications pour faire une carte avec hexagone. J'étais tombé sur tout ça qui concerne les cartes iso Wink

http://www.gamedev.net/reference/list.asp?categoryid=44

Il te reste plus qu'a (façon de parler) adapter tout ça dans le langage qui te convient...


RE: Carte en 3D Isometrique - ankh - 16-05-2007

Salut a tous!
D'abord merci a nemesis_elite pour le script, donc je m'inspire pour mon projet.
J'arrive a faire déplacer le perso sur la map par des boutons "submit", en changeant les coordonées de l'image du perso.
Le changement de map lorsque j'arrive sur un bord se fait très bien aussi(a perfectionner), donc jusqu'ici pas de problèmes.
MAIS, car il y a un mais, je bloque sur les bloquages justement Sad
En clair je n'arrive pas a bloquer le perso pour qu'il ne puisse pas aller sur une case avec un arbre par exemple. J'utilise un attribut "block" en booléen sur chaque case(0=ouvert, 1=bloqué).
Quelqu'un a une piste a m'indiquer pour passer cette "épreuve"?
Merci


RE: Carte en 3D Isometrique - OncleJames - 16-05-2007

Trouver la solution pour positionner la carte iso en absolue n'importe ou dans la page, il suffit de mettre un div,table, .. dont l'id a pour CSS :
position : relative;

ainsi on peut position sa carte n'importe ou sur la page Smile


RE: Carte en 3D Isometrique - Harparine - 16-05-2007

ankh a écrit :Salut a tous!
D'abord merci a nemesis_elite pour le script, donc je m'inspire pour mon projet.
J'arrive a faire déplacer le perso sur la map par des boutons "submit", en changeant les coordonées de l'image du perso.
Le changement de map lorsque j'arrive sur un bord se fait très bien aussi(a perfectionner), donc jusqu'ici pas de problèmes.
MAIS, car il y a un mais, je bloque sur les bloquages justement Sad
En clair je n'arrive pas a bloquer le perso pour qu'il ne puisse pas aller sur une case avec un arbre par exemple. J'utilise un attribut "block" en booléen sur chaque case(0=ouvert, 1=bloqué).
Quelqu'un a une piste a m'indiquer pour passer cette "épreuve"?
Merci

Je n'ai pas lu le script mais j'ai une p'tite idée sur le principe, il faut simplement tester ton booléen : si la case est franchissable, on déplace le perso vers la case demandée sinon, on affiche (ou non) un message d'erreur et on laisse notre fier guerrier sur sa tuile.

Dans les faits, tu as deux possibilités : ou bien tu fais ton test en javascript (ce qui fluidifie la navigation) ou bien tu le fais en php. Le mieux est encore d'appliquer les deux méthodes, pour que les joueurs n'ayant pas de javascript d'activé puissent tout de même jouer.

Par contre, je ne comprends pas bien où tu places ton attribut "block" et si c'est bien dans la balise ouvrante div de chaque case, j'ai peur que cette façon de faire ne soit pas valide (du point de vue de la syntaxe xhtml et peut-être même html). Pour contourner ce problème, le mieux est de stocker ces infos dans un tableau à double entrées (arrays imbriqués), que ce soit en javascript ou en php.

En php, ton hittest ressemblerait donc à quelque chose comme ça :

Code PHP :
<?php 
//-----------------------------------
// On déclare notre tableau (test pour 5x5 cases)
// qui définit si une case est franchissable
//-----------------------------------
$aCarte = array(
array(
0, 1, 0, 0, 0), // Première ligne
array(0, 0, 0, 0, 0), // Deuxième etc.
array(0, 0, 0, 1, 0),
array(
0, 0, 0, 0, 0),
array(
1, 0, 0, 0, 0)
);

//-------------------------------------
// Récupération des coordonnées de la case de destination
// (il ne faut pas oublier qu'un tableau commence à la valeur 0)
//-------------------------------------

$iX = 3; //4e case ...
$iY = 1; // ... de la 2e ligne

//-------------------------------------
// On fait notre test de collision et on agit en fonction
//-------------------------------------

if($aCarte[$iY][$iX]) { //Si la case est franchissable
// Alors on déplace notre bonhomme.
// On va dire qu'on a un méthode de la classe Aventurier pour ça ;)
$oAventurier->Mouvement($iX, $iY);
}
else {
// Si la case n'est pas franchissable
//On ne fait rien et on affiche un message d'erreur...
}

Voilà comment que boutiquerais mon truc. Ce n'est peut-être pas ce qu'il y a de plus optimisé mais je pense que ça fonctionne. Je ne suis pas une bête en javascript donc je ne vais pas te faire le script mais le principe est exactement le même (la structure du script aussi et les tableaux imbriqués fonctionnent de la même façon). Il te suffirait de créer une fonction Franchissement ou un truc dans le genre, avec les coordonnées en paramètres, que tu appellerais grâce à l'événement onclick).

Voilà, j'espère que ça répond à ta question ! Wink @+


RE: Carte en 3D Isometrique - ankh - 17-05-2007

Merci Harparine pour ton conseil, je l'ai suivi, et zou, ca marche(après une matinée de debug pour voir ce qui "chiait" :p
Je vous mettrais les sources dès que j'aurais paufiné le changement des maps(enfin si ca interresse du monde of course :p )


RE: Carte en 3D Isometrique - Harparine - 17-05-2007

Ravi de voir que ça t'a servi Wink

J'ai pas pensé à te le dire sur le moment mais le mieux est de créer le tableau de carte à partir d'une source externe (genre un fichier XML ou une base de données, ou encore une page php contenant tous les tableaux de cartes) : personnellement, j'utilise XML (avec Flash mais cette technologie est aussi très bien gérée avec le PHP5 natif Wink )


RE: Carte en 3D Isometrique - Harparine - 17-05-2007

Bon, maintenant, j'ai c'est moi qui ai besoin d'aide^^... J'ai une super colle pour super matheux qui me résiste pas mal : j'arrive pas à trouver le bon calcul. Je m'explique, image à l'appui :

[Image: graphtj9.png]

Voilà. En gros, je connais les coordonnées de ma souris (en rouge) et je cherche à connaitre les coordonnées de la case survolée (jaune).

Seulement, en plus de la difficulté liée à la perspective isométrique (les coordonnées des cases ne sont pas sur un plan orthonormé), Flash renvoie des positions un peu étranges pour la souris : elles sont liées uniquement à la surface verte et xmouse est compris entre 0 et 50, tandis que ymouse est compris entre 0 et 25, avec deux chiffres max après la virgule.

Donc voilà, j'avoue que je sèche. Si quelqu'un a des idées pour écrire une formule générique, je lui paie une bière, tiens Wink

juste un exemple, pour illustrer : si xmouse est compris entre 22.5 et 27.5, et ymouse est compris entre 10 et 12.5, c'est la case de coordonnées (5,5) qui est survolée.

Merci d'avance (je sais, c'est tordu Tongue)


EDIT : pas la peine de vous galérer, j'ai fini par bidouiller un truc qui fonctionne bien Wink


RE: Carte en 3D Isometrique - nemesis_elite - 17-05-2007

Salut salut, tu pourrais juste nous donnée ta formule pour placer les tiles ?
C'est à dire, la ou les ligne(s) qui calcule ou placer les tiles.

Merci