根据补丁功能,让乌龟转向其他目标

时间:2017-11-22 10:16:26

标签: algorithm netlogo

我被困在我的代码的这一部分。

  • 我想把乌龟移到我的控制之下。我的意思是,当它第一次到达房子时,它必须转向另一所房子。

在此代码中,它将移动-10 5,其中红色补丁和房屋形状。 现在,我怎么能告诉这只乌龟'你在这里,你必须去那里' !?

(我使用红色补丁,因为我试图根据补丁移动乌龟,但无法找到任何解决方案。)

breed [cities city]
breed [flag person]

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

    create-flag 1
    [ set SIZE 6 set shape "by" setxy -5 3 set HEADING 0 ]

    create-flag 1
    [ set SIZE 6 set shape "sel" setxy 12 5 set HEADING 0 ]

    create-cities 1
    [set color yellow set SIZE 2 setxy 8 2]

    create-cities 1
    [ set color yellow set SIZE 2 setxy -10 5]

    ask patch -10 5 [set pcolor red]
end

to go
    ask flag with [ shape = "by" ] [ facexy -10 5 forward 1 set HEADING 0 ]
end

更新

我理解并尝试了@ jenB的答案中的代码,但它还没有按照我的意愿移动。感谢您的关注,但我在这里尝试解释这两个问题。

我在这里开始提出一个新问题:
Turtles, patches and their moving sequentially from one patch to the next

img

2 个答案:

答案 0 :(得分:2)

在NetLogo字典中查找turtles-on。从你的另一个问题来看,我知道你正试图让你的旗帜从一个房子顺序移动到另一个房子。一种方法是让标志存储其目标,并在目标达到目标时简单地更改目标。像这样的东西(这不会起作用,因为它不完整)

breed [cities city]
breed [flag person]
flag-own
[ target
]

to setup
  clear-all

  create-flag 1
  [ set size 6
    set shape "by"
    setxy -5 3
    set target patch -10 5
    face target
  ]

  < other commands >
end

to go
  ask flag-on patch -10 5
  [ set target patch <next place you want it to go>
    face target
  ]
  ask flag with [ shape = "by" ]
  [ forward 1 ]
end

我也摆脱了所有set heading命令。命令face转动乌龟,使forward朝向乌龟面对的任何东西。命令set heading转动乌龟,使forward朝向标题指定的方向(例如set heading 90将使其向右移动,如果被告知前进)。

答案 1 :(得分:0)

在NetLogo的模型库的代码示例部分中查看“移向目标示例”。如果我正确理解你的问题,它就是这样做的。