NetLogo:我可以写一个语法,让一只海龟死去,而一只新海龟在 1 tick 内同时跳入同一个特定的补丁吗?
NetLogo: Can I write a syntax that allows a turtle to be die and a new turtle jump into the same specific patch at the same time within 1 tick?
我能否控制在特定瓦片(max-pxcor 0)中死一只乌龟,然后在 1 tick 时间内同时将另一只乌龟跳入特定瓦片(max-pxcor 0)?我想保留规则特定补丁(max-pxcor 0)是只能存在一只乌龟的条件(此规则已在另一种情况下解决。因此示例代码已省略此语法)。以下是示例语法的一部分,但它不起作用。在这种语法的情况下,海龟不能在 1 tick 时间内同时死亡和移动。感觉乌龟在 2 tick 或其他情况下已经死了并移动。移动到语法是否导致此问题?
if (count turtles-on patch max-pxcor 0 = 1)[
ask turtles-on patch max-pxcor 0 [ die ]]
ask turtles-on patch (max-pxcor - 1) 0 [
move-to patch max-pxcor 0 ]
tick
这是你的代码,括号重新定位,以便你可以看到逻辑块。
if (count turtles-on patch max-pxcor 0 = 1)
[ ask turtles-on patch max-pxcor 0
[ die
]
]
ask turtles-on patch (max-pxcor - 1) 0
[ move-to patch max-pxcor 0
]
tick
你的问题描述比较难理解。你建议海龟以不同的滴答声移动。您的代码不会发生这种情况。但我可以看到一些可能出错的地方。
通过查看代码,我认为您在上一个补丁中可能得到了很多海龟。如果那是问题所在,那么它发生的原因是因为无论 if
条件如何,您都在倒数第二个补丁上移动了海龟。移动海龟的ask
不在括号内
另一个潜在的问题是,您的 if
条件仅在海龟数量恰好等于 1 时才起作用。只要您在最后一个补丁上拥有超过 1 只海龟,就不会有海龟死亡, 他们将继续前进到最后一个补丁。
结合使用,这是否解决了问题?
if (count turtles-on patch max-pxcor 0 >= 1) ; changed the = to >=
[ ask turtles-on patch max-pxcor 0
[ die
]
ask turtles-on patch (max-pxcor - 1) 0 ; moved this inside the [ ]
[ move-to patch max-pxcor 0
]
]
tick
我能否控制在特定瓦片(max-pxcor 0)中死一只乌龟,然后在 1 tick 时间内同时将另一只乌龟跳入特定瓦片(max-pxcor 0)?我想保留规则特定补丁(max-pxcor 0)是只能存在一只乌龟的条件(此规则已在另一种情况下解决。因此示例代码已省略此语法)。以下是示例语法的一部分,但它不起作用。在这种语法的情况下,海龟不能在 1 tick 时间内同时死亡和移动。感觉乌龟在 2 tick 或其他情况下已经死了并移动。移动到语法是否导致此问题?
if (count turtles-on patch max-pxcor 0 = 1)[
ask turtles-on patch max-pxcor 0 [ die ]]
ask turtles-on patch (max-pxcor - 1) 0 [
move-to patch max-pxcor 0 ]
tick
这是你的代码,括号重新定位,以便你可以看到逻辑块。
if (count turtles-on patch max-pxcor 0 = 1)
[ ask turtles-on patch max-pxcor 0
[ die
]
]
ask turtles-on patch (max-pxcor - 1) 0
[ move-to patch max-pxcor 0
]
tick
你的问题描述比较难理解。你建议海龟以不同的滴答声移动。您的代码不会发生这种情况。但我可以看到一些可能出错的地方。
通过查看代码,我认为您在上一个补丁中可能得到了很多海龟。如果那是问题所在,那么它发生的原因是因为无论 if
条件如何,您都在倒数第二个补丁上移动了海龟。移动海龟的ask
不在括号内
另一个潜在的问题是,您的 if
条件仅在海龟数量恰好等于 1 时才起作用。只要您在最后一个补丁上拥有超过 1 只海龟,就不会有海龟死亡, 他们将继续前进到最后一个补丁。
结合使用,这是否解决了问题?
if (count turtles-on patch max-pxcor 0 >= 1) ; changed the = to >=
[ ask turtles-on patch max-pxcor 0
[ die
]
ask turtles-on patch (max-pxcor - 1) 0 ; moved this inside the [ ]
[ move-to patch max-pxcor 0
]
]
tick