5

任何人都可以阐明如何构建这样的程序吗?

他们会使用哪些 Java 类来跟踪这么多粒子,然后检查它们是否有碰撞检测之类的东西?粒子需要知道它们靠近什么粒子,或者它们不靠近任何东西,这样它们就可以下落等。

这是一个示例,以防您不确定什么是沙盘游戏。

4

2 回答 2

4

主要是数组。

  • 由两个坐标表示的主动运动颗粒的一维数组(如果需要重力加速度,可能还有速度)。
  • 布尔(或颜色)的二维数组,表示世界的固定部分。

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

(我无法完全理解这些天我们必须节省多少 CPU 能力!)

于 2010-08-11T17:14:54.727 回答
1

简单的版本可以在一个宽松的星期五晚上轻松实现(就像我刚才所做的那样)。只需使用代表您的字段的 2D 数组(字节、整数等)制作一个程序。在每个刻度中,遍历所有元素并进行检查:

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

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

我跟着这个教程,它非常好,不是太长,但仍然指出了常见的陷阱和类似的东西。

于 2010-08-27T21:26:10.173 回答