2014-02-01 3 views
3

enter image description hereКак разрешить патчи быть недоступными для черепах/агентов? Модель гимназии. Коды, предоставленные, но не работающие

Привет, мне интересно, знает ли кто-нибудь точный код, чтобы не допустить, чтобы патчи вошли в гимназию. Я закрыл все ворота, обозначенные красными пятнами, а черные пятна - это стены.

Проблема в том, что я пробовал эти разные коды, но патчи все еще проходят через стены. Может кто-нибудь мне помочь?

Обратите внимание, что я пробовал эти методы по одному, чтобы определить, есть ли какой-либо из ff. работал.

Значительная помощь будет оценена человеку/людям, которые могут мне помочь.

ask turtles[ 
ifelse [pcolor] of patch-left-and-ahead 1 1 = red [rt random-float 180 ] 
[ let f random 5 
ifelse [pcolor] of patch-right-and-ahead 1 1 = black [rt random-float 180 ] 
[ let g random 5 

ifelse [pcolor] of patch-at-heading-and-distance 1 1 = red [rt random-float 180 ] 
[let h random 5 

ifelse [pcolor] of patch-at-heading-and-distance 1 1 = black [rt random-float 180]   
[let i random 5 

ifelse [pcolor] of patch-ahead 1 = red [rt random-float 180 ] 
[let h random 5 

ifelse [pcolor] of patch-ahead 1 = black [rt random-float 180 ] 
[let i random 5 

ifelse [pcolor] of patch-left-and-ahead 1 1 = red [fd random-float 5] 
[fd f] 

ifelse [pcolor] of patch-right-and-ahead 1 1 = red [fd random-float 5] 
[fd g] 

ifelse [pcolor] of patch-at-heading-and-distance 1 1 = red [fd random-float 5] 
[fd h] 

ifelse [pcolor] of patch-at-heading-and-distance 1 1 = black [fd random-float 5] 
[fd i] 

ifelse [pcolor] of patch-ahead 1 = red [fd random-float 5] 
[fd h] 

ifelse [pcolor] of patch-ahead 1 = black [fd random-float 5] 
[fd i] 

] 
] 
] 
] 
] 

В соответствии с просьбой вот код для патча:

to setup-world 
set pcolor white 

;;FLOOR------------------------------------------------------------------------------ 
if (pycor < 91 and pycor > 10) and (pxcor < 91 and pxcor > 7) [ set pcolor 8] 
if (pycor < 90 and pycor > 11) and (pxcor = 7) [ set pcolor 8] 
if (pycor < 89 and pycor > 12) and (pxcor = 6) [ set pcolor 8] 
if (pycor < 88 and pycor > 13) and (pxcor = 5) [ set pcolor 8] 
if (pycor < 87 and pycor > 14) and (pxcor = 4) [ set pcolor 8] 
if (pycor < 86 and pycor > 15) and (pxcor = 3) [ set pcolor 8] 
if (pycor < 85 and pycor > 16) and (pxcor = 2) [ set pcolor 8] 
if (pycor < 84 and pycor > 17) and (pxcor = 1) [ set pcolor 8] 
if (pycor < 83 and pycor > 18) and (pxcor = 0) [ set pcolor 8] 
if (pycor < 82 and pycor > 19) and (pxcor = -1) [ set pcolor 8] 
if (pycor < 81 and pycor > 20) and (pxcor = -2) [ set pcolor 8] 
if (pycor < 80 and pycor > 21) and (pxcor = -3) [ set pcolor 8] 
if (pycor < 79 and pycor > 22) and (pxcor = -4) [ set pcolor 8] 
if (pycor < 78 and pycor > 23) and (pxcor = -5) [ set pcolor 8] 
if (pycor < 77 and pycor > 24) and (pxcor = -6) [ set pcolor 8] 
if (pycor < 76 and pycor > 25) and (pxcor = -7) [ set pcolor 8] 
;;basketball ----------------------------------------------------------------------- 
if (pycor < 68 and pycor > 33) and (pxcor < 85 and pxcor > 9 ) [ set pcolor 37] 

;;UP -------------------------------------------------------------------------------- 

if (pycor = 90) and (pxcor < 85 and pxcor > 7 ) [ set pcolor brown ] 

if (pycor = 88) and (pxcor < 82 and pxcor > 14 ) [ set pcolor brown ] 
if (pycor = 88) and (pxcor < 15 and pxcor > 10) [ set pcolor grey ] 
if (pycor = 88) and (pxcor < 85 and pxcor > 80) [ set pcolor grey ] 


if (pycor = 86) and (pxcor < 82 and pxcor > 14 ) [ set pcolor brown ] 
if (pycor = 86) and (pxcor < 15 and pxcor > 10 ) [ set pcolor grey ] 
if (pycor = 86) and (pxcor < 85 and pxcor > 80) [ set pcolor grey ] 

if (pycor = 84) and (pxcor < 82 and pxcor > 14 ) [ set pcolor brown ] 
if (pycor = 84) and (pxcor < 15 and pxcor > 10 ) [ set pcolor grey ] 
if (pycor = 84) and (pxcor < 85 and pxcor > 80) [ set pcolor grey ] 

if (pycor = 82) and (pxcor < 82 and pxcor > 14 ) [ set pcolor brown ] 
if (pycor = 82) and (pxcor < 15 and pxcor > 10 ) [ set pcolor grey ] 
if (pycor = 82) and (pxcor < 85 and pxcor > 80) [ set pcolor grey ] 

if (pycor = 80) and (pxcor < 36 and pxcor > 14 ) [ set pcolor brown ] 
if (pycor = 80) and (pxcor < 15 and pxcor > 10 ) [ set pcolor grey ] 
if (pycor = 80) and (pxcor < 81 and pxcor > 60 ) [ set pcolor brown ] 
if (pycor = 80) and (pxcor < 85 and pxcor > 80) [ set pcolor grey ] 

if (pycor = 78) and (pxcor < 36 and pxcor > 14 ) [ set pcolor brown ] 
if (pycor = 78) and (pxcor < 15 and pxcor > 10 ) [ set pcolor grey ] 
if (pycor = 78) and (pxcor < 81 and pxcor > 60 ) [ set pcolor brown ] 
if (pycor = 78) and (pxcor < 85 and pxcor > 80) [ set pcolor grey ] 

;;DOWN ------------------------------------------------------------------------- 

if (pycor = 11) and (pxcor < 85 and pxcor > 7 ) [ set pcolor brown ] 

if (pycor = 13) and (pxcor < 82 and pxcor > 14 ) [ set pcolor brown ] 
if (pycor = 13) and (pxcor < 15 and pxcor > 10) [ set pcolor grey ] 
if (pycor = 13) and (pxcor < 85 and pxcor > 80) [ set pcolor grey ] 

if (pycor = 15) and (pxcor < 82 and pxcor > 14 ) [ set pcolor brown ] 
if (pycor = 15) and (pxcor < 15 and pxcor > 10) [ set pcolor grey ] 
if (pycor = 15) and (pxcor < 85 and pxcor > 80) [ set pcolor grey ] 

if (pycor = 17) and (pxcor < 82 and pxcor > 14 ) [ set pcolor brown ] 
if (pycor = 17) and (pxcor < 15 and pxcor > 10) [ set pcolor grey ] 
if (pycor = 17) and (pxcor < 85 and pxcor > 80) [ set pcolor grey ] 

if (pycor = 19) and (pxcor < 82 and pxcor > 14 ) [ set pcolor brown ] 
if (pycor = 19) and (pxcor < 15 and pxcor > 10) [ set pcolor grey ] 
if (pycor = 19) and (pxcor < 85 and pxcor > 80) [ set pcolor grey ] 

if (pycor = 21) and (pxcor < 82 and pxcor > 14 ) [ set pcolor brown ] 
if (pycor = 21) and (pxcor < 15 and pxcor > 10) [ set pcolor grey ] 
if (pycor = 21) and (pxcor < 85 and pxcor > 80) [ set pcolor grey ] 

if (pycor = 23) and (pxcor < 82 and pxcor > 14 ) [ set pcolor brown ] 
if (pycor = 23) and (pxcor < 15 and pxcor > 10) [ set pcolor grey ] 
if (pycor = 23) and (pxcor < 85 and pxcor > 80) [ set pcolor grey ] 

;;CORNER DOWN RIGHT-------------------------------------------------------------------- 

if (pycor = 12 and pxcor = 7) [ set pcolor brown ] 
if (pycor = 13 and pxcor = 6) [ set pcolor brown ] 
if (pycor = 14 and pxcor = 5) [ set pcolor brown ] 

if (pycor = 13 and pxcor = 10) [ set pcolor brown ] 
if (pycor = 13 and pxcor = 9) [ set pcolor brown ] 

if (pycor = 14 and pxcor = 8) [ set pcolor brown ] 
if (pycor = 15 and pxcor = 7) [ set pcolor brown ] 
if (pycor = 16 and pxcor = 6) [ set pcolor brown ] 
if (pycor = 15 and pxcor = 10) [ set pcolor brown ] 
if (pycor = 16 and pxcor = 9) [ set pcolor brown ] 
if (pycor = 17 and pxcor = 8) [ set pcolor brown ] 
if (pycor = 18 and pxcor = 7) [ set pcolor brown ] 

if (pycor = 18 and pxcor = 10) [ set pcolor brown ] 
if (pycor = 19 and pxcor = 9) [ set pcolor brown ] 
if (pycor = 20 and pxcor = 8) [ set pcolor brown ] 

;;CORNER UP RIGHT--------------------------------------------------------- 
if (pycor = 87 and pxcor = 5) [ set pcolor brown ] 
if (pycor = 88 and pxcor = 6) [ set pcolor brown ] 
if (pycor = 89 and pxcor = 7) [ set pcolor brown ] 

if (pycor = 88 and pxcor = 10) [ set pcolor brown ] 
if (pycor = 88 and pxcor = 9) [ set pcolor brown ] 
if (pycor = 87 and pxcor = 8) [ set pcolor brown ] 
if (pycor = 86 and pxcor = 7) [ set pcolor brown ] 
if (pycor = 85 and pxcor = 6) [ set pcolor brown ] 

if (pycor = 86 and pxcor = 10) [ set pcolor brown ] 
if (pycor = 85 and pxcor = 9) [ set pcolor brown ] 
if (pycor = 84 and pxcor = 8) [ set pcolor brown ] 
if (pycor = 83 and pxcor = 7) [ set pcolor brown ] 

if (pycor = 83 and pxcor = 10) [ set pcolor brown ] 
if (pycor = 82 and pxcor = 9) [ set pcolor brown ] 
if (pycor = 81 and pxcor = 8) [ set pcolor brown ] 


;;CENTER CORNER DOWN---------------------------------------------------------------- 
if (pycor = 29 and pxcor = -1) [ set pcolor brown ] 
if (pycor = 28 and pxcor = 0) [ set pcolor brown ] 
if (pycor = 27 and pxcor = 1) [ set pcolor brown ] 

if (pycor = 29 and pxcor = -4) [ set pcolor brown ] 
if (pycor = 28 and pxcor = -3) [ set pcolor brown ] 
if (pycor = 27 and pxcor = -2) [ set pcolor brown ] 
if (pycor = 26 and pxcor = -1) [ set pcolor brown ] 

if (pycor = 29 and pxcor = -6) [ set pcolor brown ] 
if (pycor = 28 and pxcor = -6) [ set pcolor brown ] 
if (pycor = 27 and pxcor = -5) [ set pcolor brown ] 
if (pycor = 26 and pxcor = -4) [ set pcolor brown ] 
if (pycor = 25 and pxcor = -3) [ set pcolor brown ] 

if (pycor = 26 and pxcor = -7) [ set pcolor brown ] 
if (pycor = 25 and pxcor = -6) [ set pcolor brown ] 
if (pycor = 24 and pxcor = -5) [ set pcolor brown ] 

;;CENTER CORNER UP------------------------------------------------------- 
if (pycor = 72 and pxcor = -1) [ set pcolor brown ] 
if (pycor = 73 and pxcor = 0) [ set pcolor brown ] 
if (pycor = 74 and pxcor = 1) [ set pcolor brown ] 

if (pycor = 72 and pxcor = -4) [ set pcolor brown ] 
if (pycor = 73 and pxcor = -3) [ set pcolor brown ] 
if (pycor = 74 and pxcor = -2) [ set pcolor brown ] 
if (pycor = 75 and pxcor = -1) [ set pcolor brown ] 

if (pycor = 72 and pxcor = -6) [ set pcolor brown ] 
if (pycor = 73 and pxcor = -6) [ set pcolor brown ] 
if (pycor = 74 and pxcor = -5) [ set pcolor brown ] 
if (pycor = 75 and pxcor = -4) [ set pcolor brown ] 
if (pycor = 76 and pxcor = -3) [ set pcolor brown ] 

if (pycor = 75 and pxcor = -7) [ set pcolor brown ] 
if (pycor = 76 and pxcor = -6) [ set pcolor brown ] 
if (pycor = 77 and pxcor = -5) [ set pcolor brown ] 




;;center ------------------------------------------------------------------------- 
if (pxcor = -8) and (pycor < 75 and pycor > 26 ) [ set pcolor brown ] 

if (pxcor = -6) and (pycor < 67 and pycor > 34 ) [ set pcolor brown ] 
if (pxcor = -6) and (pycor < 35 and pycor > 29 ) [ set pcolor grey ] 
if (pxcor = -6) and (pycor < 72 and pycor > 66 ) [ set pcolor grey ] 

if (pxcor = -4) and (pycor < 67 and pycor > 34 ) [ set pcolor brown ] 
if (pxcor = -4) and (pycor < 35 and pycor > 29 ) [ set pcolor grey ] 
if (pxcor = -4) and (pycor < 72 and pycor > 66 ) [ set pcolor grey ] 

if (pxcor = -2) and (pycor < 67 and pycor > 34 ) [ set pcolor brown ] 
if (pxcor = -2) and (pycor < 35 and pycor > 29 ) [ set pcolor grey ] 
if (pxcor = -2) and (pycor < 72 and pycor > 66 ) [ set pcolor grey ] 

if (pxcor = 0) and (pycor < 47 and pycor > 34 ) [ set pcolor brown ] 
if (pxcor = 0) and (pycor < 67 and pycor > 54 ) [ set pcolor brown ] 
if (pxcor = 0) and (pycor < 35 and pycor > 29 ) [ set pcolor grey ] 
if (pxcor = 0) and (pycor < 72 and pycor > 66 ) [ set pcolor grey ] 

if (pxcor = 2) and (pycor < 62 and pycor > 54 ) [ set pcolor brown ] 
if (pxcor = 2) and (pycor < 47 and pycor > 38 ) [ set pcolor brown ] 
if (pxcor = 2) and (pycor < 35 and pycor > 29 ) [ set pcolor grey ] 
if (pxcor = 2) and (pycor < 72 and pycor > 66 ) [ set pcolor grey ] 

if (pxcor = 4) and (pycor < 62 and pycor > 54 ) [ set pcolor brown ] 
if (pxcor = 4) and (pycor < 47 and pycor > 38 ) [ set pcolor brown ] 
if (pxcor = 4) and (pycor < 35 and pycor > 29 ) [ set pcolor grey ] 
if (pxcor = 4) and (pycor < 72 and pycor > 66 ) [ set pcolor grey ] 


if (pxcor = 6) and (pycor < 62 and pycor > 54 ) [ set pcolor brown ] 
if (pxcor = 6) and (pycor < 47 and pycor > 38 ) [ set pcolor brown ] 
if (pxcor = 6) and (pycor < 35 and pycor > 29 ) [ set pcolor grey ] 
if (pxcor = 6) and (pycor < 72 and pycor > 66 ) [ set pcolor grey ] 

;;WaLL---------------------------------------------------------------------- 

if (pycor = 10) and (pxcor < 85 and pxcor > 7 ) [ set pcolor black ] 
if (pycor = 91) and (pxcor < 85 and pxcor > 7 ) [ set pcolor black ] 

if (pxcor = -9) and (pycor < 76 and pycor > 25 ) [ set pcolor black ] 

if (pxcor = 91) and (pycor < 34 and pycor > 9 ) [ set pcolor black ] 
if (pxcor = 91) and (pycor < 92 and pycor > 67 ) [ set pcolor black ] 

;;stage 
if (pxcor = 98) and (pycor < 68 and pycor > 33 ) [ set pcolor black ] 
if (pycor = 33) and (pxcor < 99 and pxcor > 91 ) [ set pcolor black ] 
if (pycor = 68) and (pxcor < 99 and pxcor > 91 ) [ set pcolor black ] 


if (pycor = 11 and pxcor = 7) [ set pcolor black ] 
if (pycor = 12 and pxcor = 6) [ set pcolor black ] 
if (pycor = 13 and pxcor = 5) [ set pcolor black ] 
if (pycor = 14 and pxcor = 4) [ set pcolor black ] 
if (pycor = 15 and pxcor = 3) [ set pcolor black ] 

if (pycor = 22 and pxcor = -4) [ set pcolor black ] 
if (pycor = 23 and pxcor = -5) [ set pcolor black ] 
if (pycor = 24 and pxcor = -6) [ set pcolor black ] 
if (pycor = 25 and pxcor = -7) [ set pcolor black ] 
if (pycor = 26 and pxcor = -8) [ set pcolor black ] 


if (pycor = 90 and pxcor = 7) [ set pcolor black ] 
if (pycor = 89 and pxcor = 6) [ set pcolor black ] 
if (pycor = 88 and pxcor = 5) [ set pcolor black ] 
if (pycor = 87 and pxcor = 4) [ set pcolor black ] 
if (pycor = 86 and pxcor = 3) [ set pcolor black ] 

if (pycor = 79 and pxcor = -4) [ set pcolor black ] 
if (pycor = 78 and pxcor = -5) [ set pcolor black ] 
if (pycor = 77 and pxcor = -6) [ set pcolor black ] 
if (pycor = 76 and pxcor = -7) [ set pcolor black ] 
if (pycor = 75 and pxcor = -8) [ set pcolor black ] 

;;stage-------------------------------------------------------------------------------- 
if (pycor < 68 and pycor > 33) and (pxcor < 98 and pxcor > 90 ) [ set pcolor 37 ] 

;;lines------------------------------------------------------------------------------- 
if (pycor = 66) and (pxcor < 82 and pxcor > 11) [ set pcolor yellow ] 
if (pycor = 35) and (pxcor < 82 and pxcor > 11) [ set pcolor yellow ] 
if (pxcor = 12) and (pycor < 67 and pycor > 34) [ set pcolor yellow ] 
if (pxcor = 82) and (pycor < 67 and pycor > 34) [ set pcolor yellow ] 
if (pxcor = 47) and (pycor < 67 and pycor > 34) [ set pcolor yellow ] 

;;gates are closed initially ---------------------------------------------------------- 
if (pycor = 10) and (pxcor < 88 and pxcor > 84 ) [ set pcolor red ] 
; lower left, left door 
if (pycor = 10) and (pxcor < 91 and pxcor > 87 ) [ set pcolor red ] 
; lower left, right door 

if (pycor = 91) and (pxcor < 88 and pxcor > 84 ) [ set pcolor red ] 
; lower right, left door 
if (pycor = 91) and (pxcor < 91 and pxcor > 87 ) [ set pcolor red ] 
; lower right, right door 

if (pycor = 16 and pxcor = 2) [ set pcolor red ] ; upper left , right door 
if (pycor = 17 and pxcor = 1) [ set pcolor red ] ; upper left , right door 
if (pycor = 18 and pxcor = 0) [ set pcolor red ] ; upper left , right door 
if (pycor = 19 and pxcor = -1) [ set pcolor red ] ; upper left , left door 
if (pycor = 20 and pxcor = -2) [ set pcolor red ] ; upper left , left door 
if (pycor = 21 and pxcor = -3) [ set pcolor red ] ; upper left , left door 

if (pycor = 85 and pxcor = 2) [ set pcolor red ] ; upper right , right door 
if (pycor = 84 and pxcor = 1) [ set pcolor red ] ; upper right , right door 
if (pycor = 83 and pxcor = 0) [ set pcolor red ] ; upper right , right door 
if (pycor = 82 and pxcor = -1) [ set pcolor red ] ; upper right , left door 
if (pycor = 81 and pxcor = -2) [ set pcolor red ] ; upper right , left door 
if (pycor = 80 and pxcor = -3) [ set pcolor red ] ; upper right , left door 

if (pycor = 10) and (pxcor < 88 and pxcor > 84 ) [ set pcolor green ] 
; lower left, left door 
if (pycor = 10) and (pxcor < 91 and pxcor > 87 ) [ set pcolor green ] 
; lower left, right door 

if lower-left = "Half" 
[ 
if (pycor = 10) and (pxcor < 88 and pxcor > 84 ) [ set pcolor red ] 
; lower left, left door 
if (pycor = 10) and (pxcor < 91 and pxcor > 87 ) [ set pcolor green ] 
; lower left, right door 
] 

if lower-left = "Close" 
[ 
if (pycor = 10) and (pxcor < 88 and pxcor > 84 ) [ set pcolor red ] 
; lower left, left door 
if (pycor = 10) and (pxcor < 91 and pxcor > 87 ) [ set pcolor red ] 
; lower left, right door 
] 
;;------------------------------------------------------------------------------------- 

;; lower right------------------------------------------------------------------------- 
if lower-right = "Open" 
[ 
if (pycor = 91) and (pxcor < 88 and pxcor > 84 ) [ set pcolor green ] 
; lower right, left door 
if (pycor = 91) and (pxcor < 91 and pxcor > 87 ) [ set pcolor green ] 
; lower right, right door 
] 

if lower-right = "Half" 
[ 
if (pycor = 91) and (pxcor < 88 and pxcor > 84 ) [ set pcolor green ] 
; lower right, right door 
if (pycor = 91) and (pxcor < 91 and pxcor > 87 ) [ set pcolor red ] 
; lower right, left door 
] 

if lower-right = "Close" 
[ 
if (pycor = 91) and (pxcor < 88 and pxcor > 84 ) [ set pcolor red ] 
; lower right, left door 
if (pycor = 91) and (pxcor < 91 and pxcor > 87 ) [ set pcolor red ] 
; lower right, right door 
] 
;;------------------------------------------------------------------------------------- 

;; upper left-------------------------------------------------------------------------- 
if upper-left = "Open" 
[ 
if (pycor = 16 and pxcor = 2) [ set pcolor green ] ; upper left , right door 
if (pycor = 17 and pxcor = 1) [ set pcolor green ] ; upper left , right door 
if (pycor = 18 and pxcor = 0) [ set pcolor green ] ; upper left , right door 
if (pycor = 19 and pxcor = -1) [ set pcolor green ] ; upper left , left door 
if (pycor = 20 and pxcor = -2) [ set pcolor green ] ; upper left , left door 
if (pycor = 21 and pxcor = -3) [ set pcolor green ] ; upper left , left door 
] 

if upper-left = "Half" 
[ 
if (pycor = 16 and pxcor = 2) [ set pcolor green ] ; upper left , right door 
if (pycor = 17 and pxcor = 1) [ set pcolor green ] ; upper left , right door 
if (pycor = 18 and pxcor = 0) [ set pcolor green ] ; upper left , right door 
if (pycor = 19 and pxcor = -1) [ set pcolor red ] ; upper left , left door 
if (pycor = 20 and pxcor = -2) [ set pcolor red ] ; upper left , left door 
if (pycor = 21 and pxcor = -3) [ set pcolor red ] ; upper left , left door 
] 

if upper-left = "Close" 
[ 
if (pycor = 16 and pxcor = 2) [ set pcolor red ] ; upper left , right door 
if (pycor = 17 and pxcor = 1) [ set pcolor red ] ; upper left , right door 
if (pycor = 18 and pxcor = 0) [ set pcolor red ] ; upper left , right door 
if (pycor = 19 and pxcor = -1) [ set pcolor red ] ; upper left , left door 
if (pycor = 20 and pxcor = -2) [ set pcolor red ] ; upper left , left door 
if (pycor = 21 and pxcor = -3) [ set pcolor red ] ; upper left , left door 
] 
;; ------------------------------------------------------------------------------ 

;; upper right------------------------------------------------------------------- 
if upper-right = "Open" 
[ 
if (pycor = 85 and pxcor = 2) [ set pcolor green ] ; upper right , right door 
if (pycor = 84 and pxcor = 1) [ set pcolor green ] ; upper right , right door 
if (pycor = 83 and pxcor = 0) [ set pcolor green ] ; upper right , right door 
if (pycor = 82 and pxcor = -1) [ set pcolor green ] ; upper right , left door 
if (pycor = 81 and pxcor = -2) [ set pcolor green ] ; upper right , left door 
if (pycor = 80 and pxcor = -3) [ set pcolor green ] ; upper right , left door 
] 

if upper-right = "Half" 
[ 
if (pycor = 85 and pxcor = 2) [ set pcolor red ] ; upper right , left door 
if (pycor = 84 and pxcor = 1) [ set pcolor red ] ; upper right , left door 
if (pycor = 83 and pxcor = 0) [ set pcolor red ] ; upper right , left door 
if (pycor = 82 and pxcor = -1) [ set pcolor green ] ; upper right , right door 
if (pycor = 81 and pxcor = -2) [ set pcolor green ] ; upper right , right door 
if (pycor = 80 and pxcor = -3) [ set pcolor green ] ; upper right , right door 
] 

if upper-right = "Close" 
[ 
if (pycor = 85 and pxcor = 2) [ set pcolor red ] ; upper right , right door 
if (pycor = 84 and pxcor = 1) [ set pcolor red ] ; upper right , right door 
if (pycor = 83 and pxcor = 0) [ set pcolor red ] ; upper right , right door 
if (pycor = 82 and pxcor = -1) [ set pcolor red ] ; upper right , left door 
if (pycor = 81 and pxcor = -2) [ set pcolor red ] ; upper right , left door 
if (pycor = 80 and pxcor = -3) [ set pcolor red ] ; upper right , left door 
] 
;; ---------------------------------------------------------------------------- 

end  


to setupgate 

ask patches [ 

;;exits-------------------------------------------------------------------------------- 
;; Point of view is when the agents are outside the Gymnasium. 
;; lower left-------------------------------------------------------------------------- 
if lower-left = "Open" 
[ 
if (pycor = 10) and (pxcor < 88 and pxcor > 84 ) [ set pcolor green ] 
; lower left, left door 
if (pycor = 10) and (pxcor < 91 and pxcor > 87 ) [ set pcolor green ] 
; lower left, right door 
] 

if lower-left = "Half" 
[ 
if (pycor = 10) and (pxcor < 88 and pxcor > 84 ) [ set pcolor red ] 
; lower left, left door 
if (pycor = 10) and (pxcor < 91 and pxcor > 87 ) [ set pcolor green ] 
; lower left, right door 
] 

if lower-left = "Close" 
[ 
if (pycor = 10) and (pxcor < 88 and pxcor > 84 ) [ set pcolor red ] 
; lower left, left door 
if (pycor = 10) and (pxcor < 91 and pxcor > 87 ) [ set pcolor red ] 
; lower left, right door 
] 
;;------------------------------------------------------------------------------------- 

;; lower right------------------------------------------------------------------------- 
if lower-right = "Open" 
[ 
if (pycor = 91) and (pxcor < 88 and pxcor > 84 ) [ set pcolor green ] 
; lower right, left door 
if (pycor = 91) and (pxcor < 91 and pxcor > 87 ) [ set pcolor green ] 
; lower right, right door 
] 

if lower-right = "Half" 
[ 
if (pycor = 91) and (pxcor < 88 and pxcor > 84 ) [ set pcolor green ] 
; lower right, right door 
if (pycor = 91) and (pxcor < 91 and pxcor > 87 ) [ set pcolor red ] 
; lower right, left door 
] 

if lower-right = "Close" 
[ 
if (pycor = 91) and (pxcor < 88 and pxcor > 84 ) [ set pcolor red ] 
; lower right, left door 
if (pycor = 91) and (pxcor < 91 and pxcor > 87 ) [ set pcolor red ] 
; lower right, right door 
] 
;;------------------------------------------------------------------------------------- 

;; upper left-------------------------------------------------------------------------- 
if upper-left = "Open" 
[ 
if (pycor = 16 and pxcor = 2) [ set pcolor green ] ; upper left , right door 
if (pycor = 17 and pxcor = 1) [ set pcolor green ] ; upper left , right door 
if (pycor = 18 and pxcor = 0) [ set pcolor green ] ; upper left , right door 
if (pycor = 19 and pxcor = -1) [ set pcolor green ] ; upper left , left door 
if (pycor = 20 and pxcor = -2) [ set pcolor green ] ; upper left , left door 
if (pycor = 21 and pxcor = -3) [ set pcolor green ] ; upper left , left door 
] 

if upper-left = "Half" 
[ 
if (pycor = 16 and pxcor = 2) [ set pcolor green ] ; upper left , right door 
if (pycor = 17 and pxcor = 1) [ set pcolor green ] ; upper left , right door 
if (pycor = 18 and pxcor = 0) [ set pcolor green ] ; upper left , right door 
if (pycor = 19 and pxcor = -1) [ set pcolor red ] ; upper left , left door 
if (pycor = 20 and pxcor = -2) [ set pcolor red ] ; upper left , left door 
if (pycor = 21 and pxcor = -3) [ set pcolor red ] ; upper left , left door 
] 

if upper-left = "Close" 
[ 
if (pycor = 16 and pxcor = 2) [ set pcolor red ] ; upper left , right door 
if (pycor = 17 and pxcor = 1) [ set pcolor red ] ; upper left , right door 
if (pycor = 18 and pxcor = 0) [ set pcolor red ] ; upper left , right door 
if (pycor = 19 and pxcor = -1) [ set pcolor red ] ; upper left , left door 
if (pycor = 20 and pxcor = -2) [ set pcolor red ] ; upper left , left door 
if (pycor = 21 and pxcor = -3) [ set pcolor red ] ; upper left , left door 
] 
;; ------------------------------------------------------------------------------ 

;; upper right------------------------------------------------------------------- 
if upper-right = "Open" 
[ 
if (pycor = 85 and pxcor = 2) [ set pcolor green ] ; upper right , right door 
if (pycor = 84 and pxcor = 1) [ set pcolor green ] ; upper right , right door 
if (pycor = 83 and pxcor = 0) [ set pcolor green ] ; upper right , right door 
if (pycor = 82 and pxcor = -1) [ set pcolor green ] ; upper right , left door 
if (pycor = 81 and pxcor = -2) [ set pcolor green ] ; upper right , left door 
if (pycor = 80 and pxcor = -3) [ set pcolor green ] ; upper right , left door 
] 

if upper-right = "Half" 
[ 
if (pycor = 85 and pxcor = 2) [ set pcolor red ] ; upper right , left door 
if (pycor = 84 and pxcor = 1) [ set pcolor red ] ; upper right , left door 
if (pycor = 83 and pxcor = 0) [ set pcolor red ] ; upper right , left door 
if (pycor = 82 and pxcor = -1) [ set pcolor green ] ; upper right , right door 
if (pycor = 81 and pxcor = -2) [ set pcolor green ] ; upper right , right door 
if (pycor = 80 and pxcor = -3) [ set pcolor green ] ; upper right , right door 
] 

if upper-right = "Close" 
[ 
if (pycor = 85 and pxcor = 2) [ set pcolor red ] ; upper right , right door 
if (pycor = 84 and pxcor = 1) [ set pcolor red ] ; upper right , right door 
if (pycor = 83 and pxcor = 0) [ set pcolor red ] ; upper right , right door 
if (pycor = 82 and pxcor = -1) [ set pcolor red ] ; upper right , left door 
if (pycor = 81 and pxcor = -2) [ set pcolor red ] ; upper right , left door 
if (pycor = 80 and pxcor = -3) [ set pcolor red ] ; upper right , left door 
] 
;; ---------------------------------------------------------------------------- 

] 

end  
+0

Не можете ли вы разместить ссылку на изображение? –

+0

Можете ли вы включить код для установки патча? – Marzy

+0

@RyanCarlson Я отредактировал мое сообщение. Теперь у него есть коды для патча – user3247200

ответ

4

это приятный дизайн :)

, как вы хотите сделать это должно работать только в том случае, что вы проверить точно патч, который FD перемещает черепаху на этом патче. Я заметил, что вы проверяете patch-ahead 1, но вы спрашиваете свою черепаху до fd random 5, которая не проверяет случайные 5 патчей и прыгает с красных пятен. Возможно, существует много другого способа сделать то, что вы хотите, и чаще всего я видел тот же подход, который вы использовали, если вы хотите, чтобы этот метод работал, вы должны проверить патч на правильном расстоянии, а не просто запланировать.

Существует другой способ сделать то же самое, я не уверен, как агенты выбирают дверь, к которой они хотят двигаться, но я назначил свойство, называемое ближайшей дверью, и наполнил его одним из патчей с помощью [Pcolor = зеленый], то я попросил агента проверить патчи с его скоростью ходьбы и посмотреть, белые ли они, и они находятся в правильном направлении, агент переместится на эти патчи.

turtles-own 
[closest-door] 

to setup 
.... 

create-turtles [ 

..... 
    set closest-door min-one-of patches with [pcolor = green][ distance myself] ; nearest door 
    set closest-door one-of patches with [pcolor = green] ; any open door 


] 


to go 
    ask turtles 
    [move-toward-gym closest-door random 5] 
end 
to move-toward-gym [my-door walking-speed] 
    if my-door!= nobody [ 
face my-door 
let possible-moves patches with [distance myself = walking-speed and pcolor = white] 
let t min-one-of possible-moves [distance my-door] 

if t != nobody [move-to t ] 
] 
end 

Update:

Во-первых, для контроля версий вы можете использовать Github, и вы никогда не заблудитесь с изменениями в коде :)

Во-вторых, дайте мне знать, какие ошибки вы get, функция move-to-gym работает только в том случае, если для агентов доступен зеленый патч.

https://www.dropbox.com/s/j8qe7omoediwysw/out.mov

Update:

Я только что заметил, что вы просили весь мой код:

turtles-own 
[closest-door 

] 

globals 
[lower-left 
    lower-right 
    upper-left 
    upper-right 
    ] 


to setup 
    clear-all 
movie-cancel 
    movie-start "out.mov" 
    ask patches [setup-world] 
    set lower-left "Open" 
    set lower-right "Open" 
    set upper-left "Open" 
    set upper-right "Open" 
    set upper-left "Open" 
    create-turtles 100 [ 
set size 2 

    move-to one-of patches with [ 
    pcolor = white 


    ] 
    set closest-door min-one-of patches with [pcolor = green][ distance myself] ; nearest door 
    set closest-door one-of patches with [pcolor = green] ; any open door 



    ] 
reset-ticks 
end 

to go 

     if ticks < 50 
    [ 
    movie-grab-view 
    ] 


    ask turtles 
    [move-toward-gym closest-door random 5] 

    if ticks = 50 [movie-close] 

    tick 
end 
to move-toward-gym [my-door walking-speed] 
    if my-door != nobody 
    [ 
face my-door 
let possible-moves patches with [distance myself = walking-speed and pcolor = white] 
let t min-one-of possible-moves [distance my-door] 
ifelse t != nobody [move-to t] [] 

if any? patches with [distance myself = walking-speed and pcolor = green] 
[move-to one-of patches with [pcolor = green] 
    ]] 
end 
+0

Спасибо! Могу ли я увидеть весь код, который вы сделали @Marzy? По-видимому, я с трудом добавляю свой код в свою. – user3247200

+0

Вам просто нужно добавить 'move-to-gym' без каких-либо изменений, и вам нужно добавить' turtles-own [ближайшая дверь] 'вы называете move-to-gym' close-door random 5' или любую скорость, которую вы хотите, чтобы они переместились – Marzy

+0

Это ошибки со стороны: FACE MY-DOOR. Как это исправить? лицо моей двери пусть Possible-ходы патчи с [отстраниться = пешеходную скорость и pcolor = белый] Пусть T мин-один-возможных-движений [расстояние мой двери] шаг к т – user3247200

3

Парочка соответствующие примеры кода (в разделе Примеры кода библиотеки NetLogo Models) пример Look Ahead и следующий пример патча.

Look Ahead Пример показывает один из способов, чтобы ваши черепахи не натыкались на стены. Он также может быть полезен в качестве испытательного стенда для тестирования более сложных правил движения черепах при наличии стен.

Следующий пример исправления поможет улучшить понимание того, почему математика и логика черепах, «непрерывно» перемещающихся по сетке патчей, сложнее, чем вы могли бы ожидать вначале.

 Смежные вопросы

  • Нет связанных вопросов^_^