netlogo – 模拟环形交叉路口的交通

我为红色汽车写算法向右转,方向从右到开(航向= 90)朝向航向= 180.

但它的车右转,也一样.它是如何达到一定程度的,它首先转向了标题180

我尝试了一些没有正确结果的代码?
[

 ifelse heading = 90 
  [
    if distancexy 0 0 < 30
    [
      rt 22
      fd speed
      if xcor = -2
      [
        set heading 180
        fd speed
      ]
    ]

  ]
  [
    fd speed
  ]

或者我写这样的代码?

ifelse heading = 90 
  [
    if distancexy 0 0 < 30
    [
      rt 22
      fd speed
      if ycor = -30
      [
        set heading 180
        fd speed
      ]
    ]

  ]
  [
    fd speed
  ]

最佳答案 您正在使用xcor = -2和ycor = -30等精确条件,但这些条件可能永远不会成立.

NetLogo龟不能顺利移动.他们从一点到另一点跳跃.想象一下,乌龟从它的旧位置消失并重新出现在它的新位置.乌龟不会穿过它们之间的所有点.

例如,假设您的乌龟的xcor为-2.2且面向东方.如果乌龟的fd为1,那么它的新xcor将为-1.2.但这并不意味着代码表示xcor = -2会运行.乌龟的xcor永远不会-2.在一瞬间,它是-2.2.在下一瞬间,它是-1.2.所以xcor = -2从来都不是真的.

而不是像xcor = -2这样的条件,你可能想要使用像pxcor = -2这样的条件(在整个补丁中的任何地方为真)或xcor> -3和xcor< -2 – 那种事. JenB已经在一周前的https://stackoverflow.com/a/34313275/86485告诉过你.我只是再说同样的话.你理解这一点至关重要.

点赞