我在空闲时间使用clojure和quil玩沙盒/世界模拟/粉末玩具类型的游戏。这里的想法是,世界上的每个坐标/单位都可以有一个身份(沙/水/空气/植物),具有特定的属性(光/健康等)。在每次迭代中,每个坐标都会更新,只考虑到它旁边的坐标(从较暖的坐标接收热量/当下面有空气时,水会下降)
世界变得越大,更新世界就会让计算变得非常密集。但是速度不是我最优先考虑的(比如5-10次迭代/秒就足够了)。
我想知道用parralel更新世界上的每个单元是否可行,使用Rich的ants colony演示中使用的并发原则,其中每个蚂蚁都有自己的线程。(因此,世界上的每个单元都有自己的线程)。我真的很难理解蚁群演示中发生的所有事情。例如,当两个沙子单位试图同时移动到同一个空中单位时,会出现问题吗?有可能存在那么多线程吗?(例如,500 000坐标-> 500 000线程)。或者最好忘记这一切,然后依次更新所有坐标。我还在考虑为每个坐标引入一种静态标志。所以我只需要在可能发生变化的地方更新坐标。(在下一次迭代中使用可变坐标的向量)
您好,感谢阅读。:)
发布于 2013-09-14 20:38:24
您应该查看Clojure Ants - a Literate Programming Version,它很好地解释了Rich的代码。
https://stackoverflow.com/questions/18799665
复制相似问题