我正在尝试重新创建一个“落沙”模拟,类似于那些做同样事情的各种网络玩具--我失败得很厉害。我真的不确定从哪里开始。我试图使用细胞自动机来模拟沙粒的行为,但我很难弄清楚如何让我更新“世界”的方向变得无关紧要……
例如,我想要的粒子类型之一是Plant。当植物与水接触时,植物会将水粒子变成另一个植物粒子。但是这里的问题是,如果我从上到下和从左到右更新游戏世界,那么放置在水粒子海洋中间的植物粒子将立即导致新植物粒子右侧和下方的所有水粒子变成植物。这不是我所期望的行为。=(
发布于 2011-01-11 05:51:12
一种简单的解决方案是不在原地进行每一次迭代。取而代之的是,每次你更新世界时,创建它的一个副本...然后查看原件,但更新副本。这样,更新的顺序就不再重要了,因为您在寻找粒子时完全忽略了更新。
发布于 2011-01-13 21:00:45
不要以顺序的方式编程(在所有粒子上循环),而是使用真正的模拟编程技术,在这种技术中,每个粒子都被视为遵守物理定律的单个对象/代理,可以异步操作(运行)并响应“事件”(与其他粒子的交互)。
如果使每个沙粒成为单独的对象太细粒度,那么将世界划分为小块,比如说1000个粒子,并模拟这些块的行为。
https://stackoverflow.com/questions/4651865
复制相似问题