Netlogo: [CODE] запрашивает патчи прямо за вами, чтобы изменить цвет - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь создать игру, и я хочу сделать патч позади черепахи, чтобы изменить ее цвет, как только черепаха съест фрукт.Таким образом, черепаха движется и ест фрукты.После употребления одного фрукта патч позади того, на котором он находится, изменит цвет, но этот цвет будет изменяться вместе с черепахой, чтобы создать эффект увеличения длины / размера черепахи

Теперь я попробовалработа с кодом:

ask turtles
[ if score = 10
  [ ask patch-ahead -1
    [ set pcolor yellow
    ]
  ]
]

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

1 Ответ

2 голосов
/ 29 марта 2019

Так вы после такой игры, как Снейк?Вы могли бы дать патчам переменную memory, чтобы они могли отслеживать, сколько времени прошло с тех пор, как черепаха прошла над ними.Если это значение памяти изменяется в соответствии с текущим «размером» тела змеи (в зависимости от того, сколько фруктов он съел), патчи могут оставаться окрашенными дольше.Ниже приведена простая версия (без элементов управления, у змеи просто случайное движение):

patches-own [ mem ]
breed [ snakes snake ]
breed [ fruits fruit ]

snakes-own [ tail-len ]

to setup
  ca
  create-snakes 1 [
    set color white
    set tail-len 1
    face one-of neighbors4
    ask patch-here [
      set pcolor [pcolor] of myself
    ]
  ]
  create-fruits 30 [
    move-to one-of patches
    set shape "flower"
  ]
  reset-ticks
end

to go
  ask snakes [
    if random-float 1 < 0.05 [
      rt one-of [ 90 -90 ]
    ]
    if [ pcolor ] of patch-ahead 1 = white [
      stamp
      die
    ]
    move-to patch-ahead 1
    ask patch-ahead -1 [
      set pcolor [color] of myself
      set mem [tail-len] of myself + 1
    ]
    if any? fruits-here [
      ask fruits-here [ die ]
      set tail-len tail-len + 1
    ]
  ]
  if not any? snakes [
    print "The snake tried to eat itself."
    stop
  ]
  ask patches with [ mem > 0 ] [
    set mem mem - 1
    if mem = 0 [
      set pcolor black
    ]
  ]
  tick
end
...