Bonjour, je suis en train d'essayer de faire un petit jeu de gestion de colonie marsienne...
J'ai plusieurs questions:
pour la sélection d'un batiment/bouton je ne sais pas quelle technique choisir:
- mettre tout mes objets dans une liste, et lorsque je clique, je parcours la liste et je teste pour savoir si la position du clic est au-dessus du batiment voulu.
- mettre mes objets dans un tableau qui représente le terrain, une fois que je clique, je calcule la case que le joueur à voulu sélectionner ( (clickX / largeur_d_une_case) pour connaitre la colonne...)
- assigner à chacun des objets selectionnable un MouseListener qui me permettrai de savoir quand la souris est au-dessus du batiment
chacune de ses technique à des inconvéniants: la première peut-être la plus lente (chaque fois, passer la quasi-totalité des éléments en revue)
la deuxième demande beaucoup d'espace de mémoire si je veux un tableau de 1000*1000 unités (ou un batiment peut prendre plus qu'une unité de place)
et la troisième demanderai à ce qu'à chaque élément selectionnable soit associé un composant...
et au passage, une autre question: pour l'affichage des éléments, j'utilise uniquement des simples rectangles (je m'intéresse pas à la beauté, je m'exerce juste à la programmation) lorsque je veux afficher un rectangle via la méthode drawRect d'un java.awt.Graphics, j'utilise cette ligne de commande:
g.drawRect(x*scale,y*scale,length*scale, height*scale)
où scale est un entier strictement supérieur à 0. Ainsi, celà me permet de zoomer-dézoomer. Je me suis apperçu que lorsque scale valait 1, le programme tourne plus vite que lorsqu'il est > 1. Comment celà se fait? la JVM 'saute' l'opération si on multiplie par 1?
D'avance, je vous remercie...
Partager