В методе «спроси черепах»: Как я могу прочитать переменную патча под относительным углом и на расстоянии от черепахи? - PullRequest
0 голосов
/ 18 ноября 2018

Я хочу, чтобы [черепахи с [shape = "sheep"]] переместились либо в левую, либо в правую сторону, в зависимости от того, сколько [привлекательных (зеленых) пятен] находится вокруг определенного относительного пятна.

Как черепахи с [shape = "sheep"] должны считать пятна (желтые)

(Неверный) код выглядит так:

to move-sheep
  ask turtles with [shape = "sheep"] [
    right random (16 + (count neighbors4 with [pcolor = green] patch-right-and-ahead 60 2)^ 2)
    left random (16 + (count neighbors4 with [pcolor = green] patch-right-and-ahead -60 2)^ 2)
    forward 1
    #(some other commands…)
  ]
end

Спасибо ^^

1 Ответ

0 голосов
/ 20 ноября 2018

Было бы намного проще, если бы вы на самом деле сказали нам, в чем проблема.Вы говорите, что ваш код неверен, но не то, как вы знаете, что это неправильно.Сообщает ли об ошибке (и если да, то что это за ошибка и какая строка сообщает об этом)?Движущаяся черепаха идет не в ту сторону?

Несмотря на это, самый простой способ приблизиться к этому - это сделать что-то меньшее, прежде чем пытаться двигаться.Если вы просто посчитаете количество зеленых пятен и распечатаете их, вы можете проверить код.Как только вы представите движение, как вы узнаете, правильно ли оно рассчитано?

Я все еще не совсем уверен, что вы спрашиваете.Но я думаю, что этот код может помочь вам диагностировать вашу проблему.Он говорит вам, что количество находится вокруг целевых патчей, так что вы можете увидеть, если он делает правильный счет.Как только вы узнаете, что подсчет работает, вы можете изменить движение.

to testme
  clear-all
  ask patches [set pcolor one-of [yellow green]]
  create-turtles 1 [set heading 30 set color black]
  ask one-of turtles
  [ ask patch-right-and-ahead 60 2 [set pcolor red]
    type "Right: "
    print count ([neighbors4] of patch-right-and-ahead 60 2) with [pcolor = green] 
    ask patch-right-and-ahead -60 2 [set pcolor red]
    type "Left: "
    print count ([neighbors4] of patch-right-and-ahead -60 2) with [pcolor = green]
  ]
end
...