TourDeJeu, le réseau des jeux en ligne alternatifs : jeux web multijoueurs, jeux par forum. En savoir +

Flux RSS des discussions du forum : pour les joueurs, et pour les créateurs et MJ
  Reply to this topicStart new topicStart Poll

> Java : Carte Isométrique Problèmes De Coordonnées
selenia
Ecrit le : Lundi 07 Mai 2007 à 16h58
Quote Post


Pro
*

Groupe : Membre
Messages : 163


Voila on a dessiner une carte en vu isométrique dans un JPanel auquel on ajoute un mouseListener.

Le probleme c'est que les clics de souris sont renvoyés dans un repere orthonormé à partir du coin supérieur gauche de l'ecran on nous on voudrait recuperer le numero de la case par rapport au repere iso.

en fait on ve passer d'un repere
O_________ i ________>
|
|

j

|
|
v

à un repere en chapeau .

On à essayé le changement de base et tout mais ca marche pas sleep.gif

si quelqu'un a deja buté sur ce genre de probleme.

Merci beaucoup !!!
PMEmail Poster
Top
Cedric
Ecrit le : Lundi 07 Mai 2007 à 22h31
Quote Post


Ouf
*

Groupe : Membre
Messages : 368


A moins que je ne comprenne pas ce que tu appelles ton repere isometrique, c'est pourtant un probleme assez simple non ?

En gros tu dois arriver a trouver les parametres te menant a
Xi = aXh +b (avec a = + ou - 1)
Yi = cYh +d (avec c = + ou - 1)


--------------------
user posted image
PMEmail PosterUsers Website
Top
the-gtm
Ecrit le : Mardi 08 Mai 2007 à 10h41
Quote Post


Pro
*

Groupe : Membre
Messages : 130


Dans la carte iso que j'ai faite, toutes les cases sont des objets java.awt.Polygon. Ca me permet d'utiliser la méthode Graphics.drawPolygon(polygon) pour les dessiner et la méthode Polygon.contains(xScreen, yScreen) pour savoir qu'elle est la case à un point donné. Surtout ça permet de faire des cases irrégulières (pour simuler le relief).

Sinon tu peux t'inspirer de ceci
PMEmail Poster
Top
selenia
Ecrit le : Mardi 08 Mai 2007 à 14h46
Quote Post


Pro
*

Groupe : Membre
Messages : 163


Merci the gtm !!
Je savais pas qu'un tel objet existait ca va etre beaucoup plus simple !!

sinon cedric oui on était parti sur les fonctions affines en dernier lieu ( a la base on voulait utiliser ce qu'on voyait en math en ce moment mais bon les matrices et tou beurk )

Merci à vous deux !
PMEmail Poster
Top
selenia
Ecrit le : Mercredi 09 Mai 2007 à 17h23
Quote Post


Pro
*

Groupe : Membre
Messages : 163


J'ai une question pour nos amis algorithmeurs !

Pour tester dans quelle case se trouve mon clique de souris je fait une boucle et je fait un contain(i,j) pour chaque cases ....

Sauf que voyez vous faire ceci pour un plateau de 64*64 ca prend un peu trop de temps sleep.gif !

Si vous avez une idée plus judicieuse je serai preneur.

Amicalement
PMEmail Poster
Top
Ludvig
Ecrit le : Jeudi 10 Mai 2007 à 12h05
Quote Post


Pro
*

Groupe : Membre
Messages : 109


Cela depende des axes de ta carte iso mais par exemple pour une carte
avec une axe qui pointe vers Nord-Est (V) et une autre vers Sud-Est (U)
ça devrait donner à peu près un truc du style :

U=(x+(wi/2)+y+(he/2))/wi;
V=(x+(wi/2)-y-(he/2))/he;

Ou U,V est la case et :
x,y= position pixel
wi=largeur d'un tile en pixe
he=hauteur d'un tile en pixel

Enfin c'est un peu tiré par les cheveux là donc c'est possible qu'il reste du
bidouille (ou que j'ai fait des erreurs) a faire mais globalement ça devrait être ça.

/Ludvig


--------------------
user posted image
PMEmail Poster
Top
« Sujets + anciens | Programmer | Sujets + récents »

Reply to this topicStart new topicStart Poll