一个特定的乌龟必须在访问特定点后停止

时间:2017-11-17 23:28:34

标签: move target

我正在学习NetLogo并且对某些我找不到答案的特定点有疑问。总的来说,我正在尝试编写一个具有以下功能的程序:

  • 两个国旗
  • 第一个国旗将从 A 城市移动 1.B,2.C,3.D (在D处停止)
  • 第二个国家标志将从 G 城市移动 E
  • 第二个国家/地区标志将从 D 城市移动 G
  • 虽然第一个国家搬家这些城市。国旗下降军队(例如在A开始100k士兵。在B和C 80k等人将获得90k等。
  • 当他们同时在 D 城市见面时,第一个国旗失去了所有士兵。
  • 我想根据时间绘制士兵的数量。时间/数字PLOT
  • 如果可能,我只需要设置和转到按钮。

我开始只根据库中包含的程序移动第一个标志。

在这部分中,我试图创建不同位置的不同城市。

to setup   
  clear-all   
  set-default-shape houses "house" 

  ;; CREATE-ORDERED-<BREEDS> distributes the houses evenly  
  create-ordered-houses number-of-city
    [ setxy 5 4 ] ;; B
  create-ordered-houses number-of-city
    [ setxy 1 4 ] ;; C
  create-ordered-houses number-of-city
    [ setxy 11 6 ] ;; D

在这部分我试图创建标志

create-people number-of-people [
  setxy -8 10 ;; A city for first flag
  set target one-of houses
  facexy 5 4

这是我试图理解的部分(从库中复制)。这是关于第一面旗帜的移动。

ask people [
  ;; if at target, choose a new random target
  if distance target = 0
    [ set target one-of houses
      face target ]
  ;; move towards target.  once the distance is less than 1,
  ;; use move-to to land exactly on the target.
  ifelse distance target < 1
    [ move-to target ]
    [ fd 1 ]

当我使用此代码运行时,第一个标志移动到错误的位置。我在这张照片中解释了我的问题。

我的第一个国旗的运动
img

1 个答案:

答案 0 :(得分:0)

我认为您正在调整只有一个可能目标的代码。在该代码中,可以使用one-of来选择目标,因为只有一个选择。然而,在你的改编中,有不止一个选择。所以当你在第二个代码块中创建标志时......

set target one-of houses
facexy 5 4

...你从四个房子中的任何一个选择一个随机目标,然后面对房子B(即5 4)。让我们说随机选择(one-of)选择了房子C.你的标志向B移动,因为你告诉它要面对(5 4)然后向前移动,但你对它是否接近的测试是距离到达目标(即,如果那是随机选择的那个,则到C的距离)。

尝试将该段代码更改为:

set target one-of other houses
facexy target

此代码将使标志转到随机选择的房屋,而不是他们当前所在的房屋。由于您实际上希望它们按特定顺序排列,因此您必须执行某些操作,例如为每个房屋命名(即创建houses-own属性以标识每个房屋),然后让标志执行类似{ {1}}。但是,在完成有关移动工作的所有操作后,请进行此更改。你一次添加一点点的一般方法是正确的 - 让它移动到任何目标,然后担心移动到正确的目标。