我正试着要求白海龟在邻近的8个空旷空间之一制造黄海龟。如果没有自由空间,海龟就什么也不会产生。注:白海龟保持白色,并生产黄海龟,他们可以繁殖自己以及其他黄海龟。总之,最后我想用黄海龟填满黑色的空间。
breed [ cells cell ]
cells-own [ n ]
to setup
clear-all
set-default-shape cells "square"
ask patches [ if pycor = min-pycor [sprout-cells 1]]
ask cells [ ifelse random 10 < 2 [set color white] [set color yellow]]谢谢你的回复。
我会解释我想做的事:
再次感谢你的帮助。
reset-ticks
end
to go
ask cells
[ set n count neighbors with [pcolor = yellow] ]
ask cells
[ if n >= 1
[ set color yellow] ]
tick
;ask cells
;[if ticks = 10
;[set color yellow]]
end发布于 2012-11-05 17:54:41
你到底想做什么对我来说还不完全清楚。我将提出一个可能的解释,但无论我的解释是否正确,你都应该设法澄清你的问题。
为了理解您的代码,在我看来,patches和turtles之间似乎有点混淆。在您的go过程中,如果cells有一个黄色的邻居,您将要求cells将其变为黄色。我认为你想要的是一个黄色的正方形出现在与黄色方块相邻的斑块上。您正在尝试填充的空白补丁还没有任何cells,所以ask cells变成黄色无助于您在这里。
如果您真的想继续使用cell代理,保持当前的setup过程,您可以这样做:
to go
ask patches with [not any? turtles-here] [
if any? neighbors with [any? turtles-here] [
sprout-cells 1 [
set color yellow
]
]
]
end(如果只希望单元格自下而上生长,则应右键单击视图并选择Edit...,从而关闭视图设置中的包装)
现在,一种完全不同的方法,如果您只需要某种元胞自动机的话,可能会更简单一些,那就是抛弃代理,只使用补丁。会给你这样的东西:
to setup
clear-all
ask patches [
if pycor = min-pycor [
ifelse random 10 < 2
[set pcolor white]
[set pcolor yellow]
]
]
reset-ticks
end
to go
ask patches with [pcolor = black] [
if any? neighbors with [pcolor = yellow or pcolor = white] [
set pcolor yellow
]
]
tick
end这两种方法都是有效的。第一个更令人赏心悦目。第二个稍微简单一点,因为你根本不需要海龟。这取决于你最终想做什么。
https://stackoverflow.com/questions/13231720
复制相似问题