我是 Netlogo 编程的新手。我想制作具有云形和大尺寸的乌龟,因此如果另一只乌龟,即一个人与云在同一块区域,则会失去能量。问题是我不能让一只海龟在多个补丁中,netlogo“可以看到”它只有一个补丁。
答案 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 所说,乌龟只作为一个点存在,如果你想让它们成为乌龟,你必须想出逻辑让云看起来比它们更大。
以下代码演示了如何使用 size
和 in-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
最后,您可以使用瓦片代替海龟来表示海龟移动的大面积区域。它会简化一些事情,但并非在所有情况下都有效。