一只特定的乌龟必须在访问特定点后停止
One specific turtle must stop after visiting specific point
我正在研究 NetLogo 并且有一个关于我无法找到答案的特定点的问题。总的来说,我正在尝试编写一个具有这些功能的程序:
- 两国国旗
- 第一面国旗将从 A 城市移至 1.B、2.C、3.D (停在D)
- 第二个国旗将从G城市
移动E
- 第二个国旗将从D城市
移动G
- 当第一个国家移动这些城市时。旗帜下降军队(例如在 A 开始 100k 士兵。它将在 B 90k 和 C 80k 等)
- 当他们在D城市同时相遇时,第一个国旗失去所有士兵。
- 我想根据时间绘制士兵的数量。时间/数字剧情
- 如果可能的话,我只需要设置和执行按钮。
我开始只是根据库中包含的程序移动第一个标志。
在这部分中,我尝试创建具有不同位置的不同城市。
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 ]
当我 运行 使用此代码时,第一个标志移动到错误的位置。我在这张照片中解释了我的问题。
我的第一面旗帜的移动
我认为您正在改编只有一个可能目标的代码。在该代码中,可以使用 one-of
到 select 目标,因为只有一个选择。然而,在你的改编中,有不止一种选择。因此,当您在第二个代码块中创建标志时...
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
此代码将使旗帜随机 selected 的房子不是他们当前所在的房子。由于您实际上希望它们按特定顺序排列,因此您必须做一些事情,比如给每个房子一个名字(即创建一个 houses-own
属性来标识每个房子),然后让标志做一些事情,比如 set target house with [ name = 'B' ]
。但是,请在了解有关移动工作的所有内容后进行此更改。您一次添加一点的一般方法是正确的 - 让它移动到任何目标,然后担心移动到正确的目标。
我正在研究 NetLogo 并且有一个关于我无法找到答案的特定点的问题。总的来说,我正在尝试编写一个具有这些功能的程序:
- 两国国旗
- 第一面国旗将从 A 城市移至 1.B、2.C、3.D (停在D)
- 第二个国旗将从G城市 移动E
- 第二个国旗将从D城市 移动G
- 当第一个国家移动这些城市时。旗帜下降军队(例如在 A 开始 100k 士兵。它将在 B 90k 和 C 80k 等)
- 当他们在D城市同时相遇时,第一个国旗失去所有士兵。
- 我想根据时间绘制士兵的数量。时间/数字剧情
- 如果可能的话,我只需要设置和执行按钮。
我开始只是根据库中包含的程序移动第一个标志。
在这部分中,我尝试创建具有不同位置的不同城市。
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 ]
当我 运行 使用此代码时,第一个标志移动到错误的位置。我在这张照片中解释了我的问题。
我的第一面旗帜的移动
我认为您正在改编只有一个可能目标的代码。在该代码中,可以使用 one-of
到 select 目标,因为只有一个选择。然而,在你的改编中,有不止一种选择。因此,当您在第二个代码块中创建标志时...
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
此代码将使旗帜随机 selected 的房子不是他们当前所在的房子。由于您实际上希望它们按特定顺序排列,因此您必须做一些事情,比如给每个房子一个名字(即创建一个 houses-own
属性来标识每个房子),然后让标志做一些事情,比如 set target house with [ name = 'B' ]
。但是,请在了解有关移动工作的所有内容后进行此更改。您一次添加一点的一般方法是正确的 - 让它移动到任何目标,然后担心移动到正确的目标。