我有一个随机绘制的蓝色边框,还有一个放置在边框内的球,应该随机向内移动,当它碰到墙时,应该朝相反的方向旋转并继续。为此,我写了一个代码
df["Dummy"] = 1 * (df["Spend"] > LIMIT)
df.groupby("Name") ["Dummy"] .sum() / df.groupby("Name").size()
此代码似乎有效,但是现在需要在球撞到墙壁时创建闪光。我尝试了以下代码-没有成功
breed [ balls ball ]
ask balls
[
ifelse (pcolor = blue or [pcolor] of patch-at dx dy = blue)
[
rt 180
]
[
jump 0.4
]
]
该问题应如何解决? 谢谢
答案 0 :(得分:1)
我认为是导致问题的if (pcolor = blue)
行。您的ball
代理实际上从来不会处于蓝色补丁上,因为一旦他们评估了他们之前的补丁(使用您的patch-at dx dy
行),您就可以让他们转身。因此,if (pcolor = blue)
永远不会求真,因此不会产生任何闪烁。如果您输入以下内容,这将是打印命令进行调试的好地方-
...
if (pcolor = blue)
[
print "making flash"
...
您将看到该代码从未真正评估过。因此,要解决此问题,您必须重新评估实际应何时发生闪烁-一个可能适合您的简单示例:
breed [ flashes flash ]
breed [ balls ball ]
flashes-own [ birthday ]
to setup
ca
ask patches with [
member? pxcor list max-pxcor min-pxcor or
member? pycor list max-pycor min-pycor
] [
set pcolor blue
]
create-balls 10
reset-ticks
end
to apply-flash-visualization
set size size + 1
if ticks - birthday > 2 [ die ]
end
to go
ask flashes [ apply-flash-visualization ]
ask balls [
let next patch-ahead 1
ifelse [pcolor] of next = blue [
ask next [
sprout-flashes 1 [
set shape "square"
set color white
set birthday ticks
]
]
rt 180
] [
fd 1
]
]
tick
end
此外,您可能需要查看模型库中的“弹跳示例”模型,该模型显示了如何使成角度的弹跳工作。