2012-11-05 29 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 

兩種方法都是有效的。第一個看起來更令人愉快。第二個比較簡單,因爲你根本不需要龜。這取決於你最終想做什麼。

相關問題