Как эти java sand игры отслеживают так много частиц? - PullRequest
5 голосов
/ 11 августа 2010

Может ли кто-нибудь пролить свет на то, как такая программа может быть структурирована?

Какие классы Java они будут использовать для отслеживания такого количества частиц, а затем проверять их на наличие таких вещей, как обнаружение столкновений?Частицы должны знать, с какими частицами они находятся, или что они не находятся рядом с чем-либо, чтобы они могли упасть и т.д.

Вот пример , если вы не уверены, чтопесочная игра.

Ответы [ 2 ]

4 голосов
/ 11 августа 2010

Массивы, в основном.

  • Одномерный массив активно движущихся зерен, представленный двумя координатами (и возможной скоростью, если вам нужно гравитационное ускорение).
  • Двумерный массив bools (или цветов), представляющий фиксированные части мира.

Простейшая физическая модель состоит в том, чтобы удалить зерно, когда оно находится в состоянии покоя (например, когда заполнены мировые позиции ниже, ниже слева и снизу справа): вместо этого заполняется соответствующая мировая координата. расчеты управляемы. Позвольте зерну сместиться вниз, если свободна левая или правая нижняя координата мира. Столкновения зерен между движущимися зернами можно игнорировать без потери значительной правдоподобия.

(Я не могу полностью понять, сколько процессорной мощности мы должны сэкономить в эти дни!)

1 голос
/ 28 августа 2010

Простая версия может быть реализована без особых проблем в свободную пятницу вечером (как я только что сделал). Просто создайте программу с двумерным массивом (байтов, целых чисел и т. Д.), Представляющим ваше поле. В каждом тике повторяйте все элементы и проверяйте:

  • Если поле ниже (массив [x] [y + 1]) пусто, переместите 1 место вниз (= установите [x] [y] пустым, [x] [y + 1] занятым)
  • Иначе, если [x-1] [y + 1] пусто, идите туда.
  • Иначе, если [x + 1] [y + 1] пусто, идите туда.

Это основы. Затем вы должны добавить проверки, например, не «повторять» вычисления для зерна (установите флаг в новой позиции, которая проверяется на следующих итерациях).

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

...