那些java沙子游戏如何跟踪这么多粒子?

任何人都可以对如何构建这样的程序有所了解吗?

他们将使用哪些java类来跟踪这么多粒子,然后检查碰撞检测等内容? 粒子需要知道它们旁边是什么粒子,或者它们不是任何东西,所以它们可能会掉落等等。

这是一个例子,因为你不确定什么是沙子游戏。

数组主要是。

  • 一个主动移动颗粒的一维arrays,由两个坐标表示(如果你想要重力加速度,可能是一个速度)。
  • 一个二维的bool(或颜色)arrays,代表世界的固定部分。

最简单的物理模型是一旦它处于静止时移除一个颗粒(例如,当世界位置在下方,左下方和右下方都填充时):相反,填充相应的世界坐标。这使得计算可管理。 如果世界坐标下方的左侧或右侧空闲,则允许谷物向下移动。 移动谷物之间的谷物碰撞可以被忽略而不会失去太多的真实性。

(我不知道这些天我们需要多少CPU功率!)

简单版本可以在星期五宽松的夜晚实现(就像我刚才那样)。 只需创建一个代表您的字段的2D数组(字节,整数,等等)的程序。 在每个tick中,迭代所有元素并进行检查:

  • 如果下面的字段(array [x] [y + 1])为空,则向下移动1个点(= set [x] [y]为空,[x] [y + 1]为占用)
  • 否则,如果[x-1] [y + 1]为空,那就去那里。
  • 否则,如果[x + 1] [y + 1]为空,那就去那里。

这是基础知识。 接下来,您必须添加检查,例如不“重复”计算谷物的计算(在以下迭代中检查的新位置设置标记)。

我按照这个教程,它很好,不太长,但仍指出常见的陷阱和类似的事情。