Модель Netlogo Mekka - нужны указания

Я работаю над этим заданием для своего университета с 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, следуя за одним разноцветным лидером.

Кто-нибудь из вас, ребята, может мне помочь? Я был бы бесконечно благодарен!


person user3590683    schedule 30.04.2014    source источник


Ответы (1)


Возможно, вы пытаетесь узнать слишком много сразу, написав сразу большую программу.

Начните с написания действительно небольшой программы; заставить его работать; попытаться сделать очень небольшое улучшение и заставить это работать; и так далее. Если в какой-то момент вы застрянете, зайдите сюда, покажите, что в вашем коде есть не более одного нарушения, и задайте один вопрос об одной конкретной проблеме, которую вы в настоящее время застрял. Это самый эффективный способ получить помощь.

Несколько советов по случайному кодированию:

Это недействительный код:

setxy pxcor = halfedge pycor = halfedge

setxy ожидает два числа, но вы передаете ему два логических значения: pxcor = halfedge является истинным или ложным, а pycor = halfedge также является истинным или ложным. Я думаю, вы могли иметь в виду просто setxy halfedge halfedge.

agents with [self != myself] можно заменить просто other agents.

person Seth Tisue    schedule 30.04.2014