Java: Какова хорошая структура данных для хранения карты координат для бесконечного игрового мира?

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

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

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

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

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

Спасибо

45
задан Aykın 7 March 2011 в 22:30
поделиться