Je travaille actuellement sur un jeu basé sur une dalle 2D et j'en suis arrivé à un point où j'ai besoin d'optimiser mon code. Im ajoutant beaucoup d'éléments différents dans la liste de javas tels que des arbres, des roches et ainsi de suite. La raison pour laquelle les éléments ne sont pas une tuile statique est parce que je veux que le joueur puisse interagir avec des éléments. Par conséquent, tous les éléments doivent être leur propre objet et stockés dans une liste. Le problème est que chaque fois que je veux interagir avec un élément spécifique dans la liste intégrée en java, je dois créer une boucle for et parcourir chaque élément de la liste pour trouver le bon élément aux bonnes coordonnées. (Comme la collision et ainsi de suite.)Trouver un objet spécifique à une coordonnée spécifique dans ArrayList
La façon dont je le fais est comme ceci:
List<Element> elements = new ArrayList<Element>();
public Element getElementOnPixel(int x, int y){`
for(int i = 0; i < elements.size(); i++){
int xx = elements.get(i).getX() * Game.TILE_SIZE;
int yy = elements.get(i).getY() * Game.TILE_SIZE;
int w = xx + elements.get(i).width;
int h = yy + elements.get(i).height;
if(x >= xx && x < w && y >= yy && y < h) {
return elements.get(i);
}
}
return null;
}
Comme vous pouvez le voir ci-dessus, je dois aller pensé toute la liste jusqu'à ce que je trouve l'élément droit à la coordonnée droite. Voici où le problème apparaît parce que j'ai beaucoup d'éléments dans mon jeu. Ma question suit:
Existe-t-il un autre moyen de trouver un élément spécifique à une coordonnée spécifique dans javas intégré dans les listes?
Je pense que vous posez la mauvaise question. La question n'est pas "comment puis-je optimiser ma structure de données pour une exigence donnée". La question devrait être "quelles structures de données existent, et laquelle a le plus d'avantages compte tenu de mes besoins". En d'autres termes: vous pourriez vouloir étudier ce que les arbres, les cartes, les ensembles, peuvent faire pour vous. Signification: si une recherche rapide est requise; alors une structure de données (List) qui nécessite une recherche linéaire ... pourrait ne pas être la meilleure idée. – GhostCat