好的,标题不清楚,这就是我的意思。

我正在编写某种游戏(例如生活游戏)。例如,有动物(每个动物都是类的Java实例)。

所有这些动物都在地图上,并且所有这些“世界每次“转弯”都会演化

这些动物可以在每个时采取行动。
例如:狼杀死了绵羊。

但是,我对在状态之间进行这些演化的“方式”有麻烦,因为结果将取决于,即我在动物中循环的的顺序。

范例:

  • 狼的首个:狼杀死了绵羊(然后绵羊死了,所以没有动作)
  • 绵羊第一个:绵羊吃一些草和然后THEN (狼的转身)狼杀死了绵羊

  • 我怎么解决这个问题 ?

    多线程? (但是我将有很多动物,例如1000甚至更多……)。有没有一种算法,可以做到这一点的“方法”?

    谢谢

    最佳答案

    我认为实体只有在非常简单的情况下才能并行发展(以康威的生活为例)-对于您的“狼羊草”世界,您对它的思考越多,它就会变得越来越复杂:

  • 考虑一下有两只狼和一只绵羊的情况。狼一决定吃羊。狼二决定吃羊-您将如何决定哪只羊会变成羊(假设进食是一项原子操作-狼不能共享餐食)。因此,您仍然需要决定一些顺序,例如说“狼一号”得到了一只绵羊,而“狼二号”却什么也没有(这对于狼二号来说是完全出乎意料的-一秒钟前有只绵羊,它张开了嘴-BAM!-什么都没有)
  • 有两只狼和两只绵羊。两只绵羊的“吸引力”对于两只狼都是相同的,因此它们随机选择猎物。不幸的是,他们选择的是同一只绵羊,狼一号吃了绵羊一号,狼二号也尝试吃了绵羊一号,但是它神奇地消失在鼻子下面。回合结束。在下一回合中,第二只绵羊逃跑,第二只狼饿了-这完全是不合逻辑的。

  • 因此,我认为简单地遍历“动物”列表并为每个执行原子动作的动物调用一个方法会导致更合理的宇宙。如果您担心较早繁殖的动物比不较早繁殖的动物有不公平的优势,则可以在每回合之前随机分配动物列表-这样,在您的示例中,绵羊要么吃草,然后被狼吞噬,否则狼会在有机会吃草之前先吃掉它。这就是生活。

    07-24 20:33