如果有人请给一些时间 .
我有一个区域(比如一个殖民地),边界墙为黑色斑块,在边界内的某个点上有一栋建筑物墙体为蓝色斑块 . 人(品种)通常在边界和建筑物内移动 . 他们也进入和离开边界 . 由于某种原因(假设谣言)和一定条件(如果超过15人听到谣言),他们开始随机移动任何 Headers 0,90,180和270.所以,我无法解决的问题是,申请检查海龟(人)随机移动以改变他们的方向,或者如果他们感觉到边界或向前方贴墙,则返回 .
我尝试了下面的方法,但没有工作,他们简单的通过形成这些补丁1)问龟听到 - 谣言?和时间听到> 1 [如果[pcolor]的补丁提前1 =蓝色[设置 Headers [ Headers ]的自我 - 180]
如果[pcolor]的补丁提前1 =黑色[设定 Headers [ Headers ]的自我 - 180]]
2)设置边界墙[set pcolor black]和building-wall [set pcolor blue]的补丁,然后设置补丁变量boundary-wall?和建筑墙?这些补丁是真的 . 进一步询问乌龟是否听说过 - 谣言?和时间听到> 1 [如果边界墙?还是建筑墙? [设定 Headers [ Headers ]自我 - 180]]
程序顺序是
to go
ask people [ ;breed
fd speed
spread-rumor
people-wander ]
end
所以传播谣言功能后,
to people-wander
if heard-rumor? and times-heard > 1 and inside-boundary?
[
if people-heard-rumor > 10 [ set heading one-of (list 0 90 180 270) ] ];random 360
;people-heard-rumor is a count how many have received rumor
if heard-rumor? or fear-worst? [
; if [pcolor] of patch-ahead 1 = blue [set heading [heading] of self - 180]]
; if [pcolor] of patch-ahead 1 = black [set heading [heading] of self - 180]]
boundary-wall? or temple-wall? [set i? true set heading [heading] of self - 180 show 5] ]
end
我不知道我在做什么错 . 但我当然没有采用正确的方法 . 任何帮助都非常感谢 .
1 回答
你从
fd speed
开始,所以你的people
将直接通过该命令的障碍,而无需测试障碍 . 请注意,即使您在此之前要测试1个补丁,如果speed
可能大于1,您仍然可以直接通过障碍 . 此外,在一个角落里,person
可能在它前面和后面都有一个障碍,所以逆转过程也可能是一个问题 .顺便说一句,
[heading] of self
与heading
相同,而转向它更自然地说rt 180
.EDIT (in response to comment):
这是一个逐步移动的简单示例,沿途检查: