Netlogo 根据海龟的大小,每个海龟有更多的补丁
我是Netlogo编程的新手。我想让乌龟有云的形状和大的尺寸,所以如果另一只乌龟,即一个人,与云在同一块,就会失去能量。问题是我不能让海龟出现在多个补丁中,netlogo“可以看到”它只存在于一个补丁中。无论描绘海龟的图标大小如何,海龟都只位于一个点上(由变量Netlogo 根据海龟的大小,每个海龟有更多的补丁,netlogo,patch,Netlogo,Patch,我是Netlogo编程的新手。我想让乌龟有云的形状和大的尺寸,所以如果另一只乌龟,即一个人,与云在同一块,就会失去能量。问题是我不能让海龟出现在多个补丁中,netlogo“可以看到”它只存在于一个补丁中。无论描绘海龟的图标大小如何,海龟都只位于一个点上(由变量xcor和ycor定义)。然而,你可以用距离来寻找其他海龟是否接近,正如JenB所说,海龟只是作为一个点存在,如果你想让它们成为海龟,你必须想出逻辑来让云看起来比它们更大 下面是一些代码,演示了如何使用大小,以及如何使云品种在它们经过时影响
xcor
和ycor
定义)。然而,你可以用距离来寻找其他海龟是否接近,正如JenB所说,海龟只是作为一个点存在,如果你想让它们成为海龟,你必须想出逻辑来让云看起来比它们更大
下面是一些代码,演示了如何使用大小
,以及如何使云
品种在它们经过时影响叶
品种颜色。它最好与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
你也可以稍微颠倒一下逻辑,让树叶检查它们是否在云中。我觉得这个选项更令人困惑,但在您的情况下可能会更好:
to go-leaves
ask leaves [
if any? clouds with [distance myself < (size / 2)] [
set color (color - 1)
]
fd (1 + random 10) / 10
]
end
待办事项
请假[
如果有的话?云与[距离<(大小/2)][
设置颜色(颜色-1)
]
fd(1+10)/10
]
结束
最后,不要用海龟来表示海龟移动过的大片区域,你可以用补丁代替。它可以简化一些事情,但并非在所有情况下都有效