模拟环形交通枢纽

时间:2015-12-22 15:07:49

标签: netlogo

我为红色汽车编写算法,右转方向从右到开(航向= 90)朝向航向= 180。 但它的车右转,也一样。它是如何达到一定程度的,它首先转向了标题180

image

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

 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
  ]

1 个答案:

答案 0 :(得分:1)

您使用的是xcor = -2ycor = -30等确切条件,但这些条件可能永远不会成立。

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

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

您可能希望使用像xcor = -2这样的条件(在整个修补程序中的任何位置都为true)或pxcor = -2这样的条件,而不是xcor > -3 and xcor < -2这样的条件。

JenB已经在一周前的https://stackoverflow.com/a/34313275/86485告诉过你。我只是再说同样的话。你理解这一点至关重要。