根据大小,每只海龟有更多的补丁 Netlogo

时间:2021-05-05 06:24:32

标签: netlogo patch

我是 Netlogo 编程的新手。我想制作具有云形和大尺寸的乌龟,因此如果另一只乌龟,即一个人与云在同一块区域,则会失去能量。问题是我不能让一只海龟在多个补丁中,netlogo“可以看到”它只有一个补丁。

2 个答案:

答案 0 :(得分:0)

无论描绘海龟的图标有多大,海龟只位于一个点(由变量 { "version": "0.2.0", "configurations": [ { "name": "Current Device", "request": "launch", "type": "dart" }, { "name": "Android", "request": "launch", "type": "dart", "deviceId": "android" }, { "name": "iPhone", "request": "launch", "type": "dart", "deviceId": "iphone" }, ], "compounds": [ { "name": "All Devices", "configurations": ["Android", "iPhone"], } ] } xcor 定义)。但是,您可以改为使用 ycor 来查找其他海龟是否靠近

答案 1 :(得分:0)

正如 JenB 所说,乌龟只作为一个点存在,如果你想让它们成为乌龟,你必须想出逻辑让云看起来比它们更大。

以下代码演示了如何使用 sizein-radius 使 clouds 品种在经过时影响 leaves 品种颜色。它与 shape = "circle" 一起使用效果最好,因为云的半径将与叶子受影响的地方相匹配。您可以将此代码添加到基本的新 NetLogo 模型中以查看它的工作情况:

breed [ clouds cloud ]
breed [ leaves leaf ]

to setup
  clear-all
  
  ask patches [ 
    set pcolor blue + 2 
  ]
  
  create-clouds 10 [
    set xcor random-xcor
    set ycor random-ycor
    set size 1 + random 4
    set color white - 2 
    set shape "circle"
  ]
  
  create-leaves 35 [
    set xcor random-xcor
    set ycor max-pycor
    set shape "leaf"
    set color green
    set heading 180
  ]
end

to go
  ask clouds [
    ask leaves in-radius (size / 2) [
      set color (color - 1) 
    ]
  ]
  
  ask leaves [
    fd (1 + random 10) / 10
  ]
end

您也可以稍微颠倒一下逻辑,让叶子使用 distance 检查它们是否在云中。我发现此选项更令人困惑,但在您的情况下可能会更好:

to go-leaves   
  ask leaves [
    if any? clouds with [distance myself < (size / 2)] [
      set color (color - 1)      
    ]
    fd (1 + random 10) / 10
  ]
end

最后,您可以使用瓦片代替海龟来表示海龟移动的大面积区域。它会简化一些事情,但并非在所有情况下都有效。