Netlogo - 用特定的彩色海龟填充相邻的补丁,直到满

时间:2012-11-05 12:01:39

标签: netlogo

我正在试图要求白龟在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]]

感谢您的回复。

我会解释我正在尝试做什么:

  1. 白色方块代表“干细胞”,它具有自我繁殖和产生另一种类型细胞(例如TA细胞)的能力,因此,最初每个白细胞将在其上方或其上述角落之一处产生另一个细胞。
  2. 在第二步中,每个TA细胞在其周围的任何空白区域中随机产生其他细胞。
  3. 第三,干细胞(白色方块)重复步骤1,同时TA细胞填充其周围的空白区域之一。细胞(干细胞和TA细胞)一旦它们周围没有空的空间(当已经填充了8个邻居时)就停止产生新细胞。
  4. 在最后阶段,所有黑色空间都应填入TA细胞。最后一行的黄色方块基本上什么也没做。
  5. 再次感谢您的帮助。

      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
    

1 个答案:

答案 0 :(得分: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 )来关闭视图设置中的包装

现在,一种完全不同的方法,如果你想要的只是一种细胞自动机,可能会更简单,就是抛弃代理并只使用补丁。这会给你类似的东西:

{{1}}

两种方法都有效。第一个在视觉上更令人愉悦。第二个稍微简单,因为你根本不需要海龟。这取决于你最终想做什么。