Нетлого Мекка Модель - нужны направления
Я работаю над этим заданием для моего университета с Netlogo, и я действительно застрял. Я только начал использовать Netlogo и пытаюсь воссоздать Мекку вместе с несколькими паломниками.
Я пробовал много разных кодов, добавлял новые, пробовал, удалял некоторые, но вот что я придумал:
turtles-own
[direction ;; 1 follows right-hand wall, -1 follows left-hand wall
way-is-clear? ;; reporter - true if no wall ahead
checked-following-wall?]
globals [halfedge]
breed [agents agent ]
agents-own [ around visible ]
to setup
create-agents 500 [
set color green
set size 2
; distribute agents randomly
setxy pxcor = halfedge pycor = halfedge
set heading random 360
; ensure that each is on its own patch
while [any? other agents-here] [ fd 1 ]
]
end
to bounce
if [pcolor] of patch-at dx 0 = blue [
set heading (- heading)
]
if [pcolor] of patch-at 0 dy = blue [
set heading (180 - heading)
]
end
to go
ask agents [ count-those-around ]
ask agents [ move ]
end
; store the number of agents surrounding me within
; local-radius units
; and the agents that I can see within visible-radius
to count-those-around
set around count agents with [self != myself] in-radius
local-radius
set visible agents with [self != myself] in-radius
visible-radius
end
to move
;; turn right if necessary
if not wall? (90 * direction) and wall? (135 * direction) [ rt 90 * direction ]
;; turn left if necessary (sometimes more than once)
while [wall? 0] [ lt 90 * direction ]
;; move forward
fd 1
end
; face towards the most popular local spot
to face-towards
face max-one-of visible [around]
end
; face away from the most popular local spot
to face-away
set heading towards max-one-of visible [around] - 180
end
to setup-center
clear-all
set halfedge int (edge / 2)
ask patches[
if (pxcor = (- halfedge) and pycor >= (- halfedge) and pycor <= (0 + halfedge) )
[set pcolor blue] ;; ... draws left edge in blue
if ( pxcor = (0 + halfedge) and pycor >= (- halfedge) and pycor <= (0 + halfedge) )
[set pcolor blue] ;; ... draws right edge in blue
if ( pycor = (- halfedge) and pxcor >= (- halfedge) and pxcor <= (0 + halfedge) )
[set pcolor blue] ;; ... draws bottom edge in blue
if ( pycor = (0 + halfedge) and pxcor >= (- halfedge) and pxcor <= (0 + halfedge) )
[set pcolor blue] ;; ... draws upper edge in blue
]
end
- Идея состоит в том, что сначала устанавливается квадрат, напоминающий каабу.
- После этого черепахи настроены.
- Предполагается, что они все ходят вокруг стены в направлении против часовой стрелки.
- Предполагается, что будет один "лидер", который приведет всех паломников вокруг Каабы.
Прямо сейчас Кааба успешно нарисована, единственная проблема в том, что черепахи не должны появляться там или сталкиваться с ними (следовательно, код удара). Кроме того, они ходят случайным образом, и я понятия не имею, как заставить их двигаться в структуре Counter-Clickwise, следуя одному разноцветному лидеру.
Кто-нибудь из вас, ребята, может мне помочь? Буду вечно благодарен!
1 ответ
Возможно, вы пытаетесь выучить слишком много всего сразу, написав большую программу одновременно.
Начните с написания действительно маленькой программы; заставить его работать; попытаться сделать очень небольшое улучшение к нему, и заставить это работать; и так далее. Если в какой-то момент вы застряли, подойдите сюда, покажите, что ваш код содержит не более одной неисправности, и задайте один вопрос об одной конкретной проблеме, на которой вы сейчас застряли. Это самый эффективный способ получить помощь.
Несколько случайных советов по кодированию:
Это не правильный код:
setxy pxcor = halfedge pycor = halfedge
setxy
ожидает два числа, но вы передаете ему два логических значения: pxcor = halfedge
верно или неверно, и pycor = halfedge
верно или неверно тоже. Я думаю, что вы могли бы иметь в виду просто setxy halfedge halfedge
,
agents with [self != myself]
можно заменить просто other agents
,