Если вы еще этого не сделали, взгляните на пример «Look Ahead» в Библиотеке моделей - это простая демонстрация использования цвета патча для управления движением черепахи. Некоторый код на основе этой модели приведен ниже. С этой настройкой:
breed [ seekers seeker ]
breed [ goals goal ]
patches-own [ steps-from-goal ]
to setup
ca
ask patches [
set steps-from-goal 999
]
ask patches with [ pxcor mod 10 = 0 ] [
set pcolor red
]
ask patches with [ pycor mod 10 = 0 ] [
set pcolor black
]
ask one-of patches with [ pcolor = black ] [
sprout-seekers 1 [
set color blue
pd
]
]
ask one-of patches with [ pcolor = black ] [
sprout-goals 1 [
set color white
set shape "circle"
]
]
reset-ticks
end
Вы можете бродить по породе seekers
по черным квадратам, пока они не поделятся заплатой с goal
черепахой:
to random-wander
ask seekers [
if any? goals-here [
stop
]
rt random 61 - 30
ifelse can-move? 1 and [pcolor] of patch-ahead 1 = black [
fd 1
] [
rt one-of [ 90 -90 ]
]
]
tick
end
Тем не менее, обратите внимание, что черепахи могут «прыгать» по углам участков, используя этот метод, потому что они могут оценить patch-ahead 1
под любым углом, так что участок за одно место впереди черепахи может быть оценен через угол. другого патча. Черепаха никогда не должна садиться на запрещенный участок, но вы можете заметить, что их путь может пересекать эти заблокированные участки.
Изменить:
См. Упрощенный код, который "ловит" черепаху в квадратной клетке:
to setup
ca
crt 1 [
setxy 5 5
set heading 180
repeat 4 [
repeat 10 [
ask patch-here [ set pcolor red ]
fd 1
]
rt 90
]
die
]
crt 1 [ pd ]
reset-ticks
end
to go
ask turtles [
rt random 61 - 30
ifelse can-move? 1 and [pcolor] of patch-ahead 1 = black [
fd 1
] [
rt one-of [ 90 -90 ]
]
]
tick
end
После 1100 тиков:
После 13300 тиков: