2012-11-05 4 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 세포 모두)는 주변에 빈 공간이 없으면 (새로운 이웃이 이미 채워져있을 때) 새로운 세포를 생산하지 않습니다.
  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에 노란색 이웃이있는 경우 노란색으로 바뀌도록 요청합니다. I 은 노란색 사각형이 이웃하는 패치에 노란색 사각형이 나타나기를 원하는 것이라고 생각합니다. 채우려는 빈 패치에 아직 cells이 없으므로 ask cells이 노란색으로 바뀌면 여기서 도움이되지 않습니다.

to go 
    ask patches with [not any? turtles-here] [ 
    if any? neighbors with [any? turtles-here] [ 
     sprout-cells 1 [ 
     set color yellow 
     ] 
    ] 
    ] 
end 

(당신이 당신의 세포가 아래에서 위로 단지에서 성장하려면, 당신은 설정해야합니다 : 당신이 정말로 당신의 현재 setup 절차를 유지 cell 에이전트를 고수하려면

, 당신은 뭔가를 할 수 보기 설정을 마우스 오른쪽 단추로 클릭하고 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 

두 가지 방법 모두 유효합니다. 첫 번째는 시각적으로 조금 즐겁습니다. 두 번째 것은 약간 거북이가 필요 없기 때문에 약간 더 간단합니다. 그것은 당신이 궁극적으로하고 싶은 것에 달려 있습니다.

관련 문제