海龟的图案移动(的NetLogo)(Turtles moving in a pattern (Net

2019-09-25 20:02发布

下午好,我试图让我的龟一组的4个蓝色斑块之间移动。 我可以让他们获得这些补丁,但之后,他们只是呆在那里,而我需要的是他们连续移动(按顺序)到下一个蓝色补丁他们的权利。 我不知道该怎么做。

这是我讲的一段代码:

to move-turtles

    ask turtles 
      [while [[pcolor] of patch-here != blue]
         [
           face min-one-of patches with [pcolor = blue ] [ distance myself ]
           forward 1
         ]
      ]  
    tick
    end

通过提前,谢谢!

Answer 1:

你用右手while循环的海龟将在第一蓝色补丁他们来到被卡住,因为如果他们跨上相邻的贴片便马上要搬回到最近的蓝色补丁(一个他们只是左) 。 此外,这种情况发生在while循环一切的单一蜱内发生,如果你只是希望他们移动到最近的蓝色补丁作为您设置的一部分,只需使用move-to 。 如果他们到最近的蓝色补丁运动你很重要,它可能更好地在这里使用的if语句,而不是while

此外,你所描述的运动两种不同的“模式”。 首先,你要海龟移动到您希望他们遵循的电路。 然后,如果他们是在电路中,你希望他们跟着他们的目标在电路中的下一个补丁的蓝色,然后移动到该补丁有序路径。 因此,它可能更容易成立两个独立的程序,并在适当的时候给他们打电话。 它可能也有帮助,如果海龟知道他们应该去下一个(当前目标),他们应该执行的哪个移动模式。 所以,你可以建立turtles-own变量,如:

turtles-own [
  on-circuit?
  my-target 
]

请确保您在设置中设置这些变量,使它们不是默认的“0”未定义的变量:

to setup
  ca
  reset-ticks
  ask (patch-set patch 5 5 patch 5 -5 patch -5 5 patch -5 -5 ) [
    set pcolor blue
  ]

  crt 1  [

    set on-circuit? false   ;;; so a starting turtle knows which movement procedure to use
    set my-target nobody    
    setxy random 30 - 15 random 30 - 15    
    pd
  ]

end

然后,你可以运行你的go过程使得海龟将努力让到,如果他们的电路“的电路?” 是假的,他们会走,如果他们的电路“的电路?” 是真的。

to go

  ask turtles [
    ifelse on-circuit? = false [  ;;; do this if turtle is not yet on the circuit
      get-to-circuit
    ]
    [  ;;;  do this if the turtle has been designated as on the circuit
      walk-circuit
    ]
  ]
  tick

end

现在,你让你get-to-circuitwalk-circuit程序。 我会告诉你我是如何设置我get-to-circuit ,而是看你能不能找出其余walk-circuit

to get-to-circuit

  set my-target min-one-of other patches with [pcolor = blue ] [ distance myself ]
  face my-target
  fd 1
  if distance my-target < 1 [
    move-to my-target 
    ;;; This lets the turtle know it can switch to "walk-circuit" on the next tick 
    set on-circuit? true   
    set heading one-of [ 0 90 180 270 ] 
  ]
end


to walk-circuit
  if  my-target =  nobody [
    set my-target one-of ( other patches with [ pcolor = blue ] ) in-cone 10 180
  ]
?
?
? ...


文章来源: Turtles moving in a pattern (Netlogo)