2012-11-05 26 views
2

我试图要求白色海龟创建黄龟到8个空的相邻空间之一。如果没有空闲空间,乌龟应该什么都不会产生。 注:白龟保持白色,并产生能够自我繁殖的黄龟以及其他黄龟。总之,最后我想用黄龟来填满黑色空间。Netlogo - 用特定的彩色龟填充相邻的补丁,直到填满

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]] 

感谢您的回复。

我会解释我想要做的事:

  1. 白色正方形代表“干细胞”,它具有自我复制和产生另一种类型的细胞(如TA细胞)的能力,所以最初,每个白细胞将在其上方或其上方的一个角处产生另一个细胞。
  2. 在第二步中,每个TA细胞在其周围的任何空白空间中随机生成其他细胞。
  3. 第三,干细胞(白色方块)重复步骤1,同时TA细胞填充其周围的空白空间之一。细胞(包括干细胞和TA细胞)在它们周围没有空的空间(当8个邻居已经填满时)停止产生新细胞。
  4. 在最后阶段,所有的黑色空间都应该填充TA细胞。最后一行的黄色方块基本上什么都不做。

再次感谢您的帮助。

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 

回答

2

你究竟想要做什么并不完全清楚。我要去解释一下可能的解释,但不管我的解释是否正确,你应该试着澄清你的问题。

试图了解你的代码,在我看来,似乎在patchesturtles之间有点混淆。在你的go程序中,如果他们有一个黄色的邻居,你会要求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 

两种方法都是有效的。第一个看起来更令人愉快。第二个比较简单,因为你根本不需要龟。这取决于你最终想做什么。

相关问题