Соответствующее представление уровня / структура данных для игры на 2D-платформе? - PullRequest
2 голосов
/ 23 августа 2011

Я собираюсь запрограммировать копию Марио на Java. Я думаю о 2 представлениях / структурах данных для уровней, но я не уверен, какой из них выбрать:

  • 2D целочисленный массив.
  • Квадри для разделения уровня на части.

Каковы его преимущества и недостатки?

Ответы [ 2 ]

5 голосов
/ 23 августа 2011

Определенно двумерный массив некоторого типа. Целые числа были бы хорошей идеей, однако символы были бы еще лучшей идеей.

Подумайте о создании текстового файла, который по сути является "картой". Это может быть 10 строк на 10 столбцов текста. Очень простая карта, в данном случае. Возможно, вы могли бы использовать «а» для обозначения травы и «б» для обозначения кирпича. Таким образом, вы могли бы даже визуально понять вашу карту, прежде чем запустить ее в действие. Но вы можете в основном запрограммировать свое приложение, чтобы оно зависело от этого текстового файла для карты.

Например, рассмотрим эту карту:

bbbbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaa

Итак, это будет похоже на длинную кирпичную дорогу над 3 длинными рядами травы. Представьте себе, что эта схема намного сложнее, с использованием всевозможных символов a-z и A-Z, даже знаков препинания, таких как $ или% или &.

Затем вы можете создавать карты на лету, просто изменив текстовый файл. Если вы используете целые числа, вы ограничены только 10 символами (или 10 объектами карты как таковыми). Например, что, если у вас есть более 10 объектов, то как вы можете создать текстовый файл, где цифры находятся рядом друг с другом. Вы не будете знать, как разделять цифры.

Недостатком дерева quadtree является то, что он слишком сложен и не обеспечивает быстрого доступа к определенным элементам.

2 голосов
/ 23 августа 2011

Действительно, решать вам.Один из способов, который я могу придумать, - это иметь двухмерный массив плиток карты, либо чистый, либо объект.Плитка будет иметь определенный размер.Конечно, тогда у вас есть проблема, если что-то половина плитки.Другой вариант - массив объектов с данными об объекте и его расположением внутри.Это менее эффективно, если только вы не сортируете данные.

Если вы думаете, что ваши карты будут слишком тяжелыми для объектов, я бы предложил 2d карту плиток.В противном случае я бы использовал массив объектов или параллельные массивы (на ваш выбор), указывающие местоположение и тип элемента.

...