Java: Что такое хорошая структура данных для хранения карты координат для бесконечного игрового мира? - PullRequest
44 голосов
/ 08 марта 2011

Я привык к кодированию на PHP, но я не очень хорошо разбираюсь в Java, и это было проблемой в течение некоторого времени.Я ожидаю, что это будет довольно простое решение, однако я не могу найти ни одного хорошего примера кода, каким бы способом я его не искал, поэтому вот так:

Я программирую игру, которая происходит в двумерном случайно сгенерированном бесконечном мире накарта на основе тайлов (придирки: я знаю, что она не будет по-настоящему бесконечной. Я просто ожидаю, что мир будет довольно большим).Обычный подход многомерного массива map [x] [y] начинался как базовая идея, но, поскольку Java не предоставляет возможности для нецелочисленных (то есть отрицательных) изменений ключа массива, как это делает PHP, я не могу должным образом иметь (-x, + x, -y, + y) система координат с ключами массива.

Мне нужно найти объекты на плитке по определенной координате x, y, а также найти "соседние плитки"определенной плитки.(Тривиально, если я могу получить getObjectAt (x, y), я могу получить (x + 1, y) и т. Д.)

Я читал о четырехугольных деревьях и R-деревьях и тому подобное.Концепция интересна, однако я не видел ни одного хорошего, простого примера реализации в Java.И кроме того, я не совсем уверен, что это именно то, что мне нужно.

Любой совет приветствуется

Спасибо

Ответы [ 11 ]

0 голосов
/ 08 марта 2011

Вы, вероятно, хотите использовать реализацию Map. HashMap, SortedMap и т. Д., В зависимости от того, сколько данных вы намереваетесь хранить и ваши шаблоны доступа (Sorted Map очень хорош для последовательного доступа, HashMap лучше для произвольного доступа).

Вы можете использовать двумерные Карты или погрузить свои 2-й индекс в ключ для 1-й Карты.

...