colors - 如何随机改变 NetLogo 补丁的颜色
问题描述
我的补丁初始为绿色 (65)、黑色 (0) 或随机基色。每 5 个刻度,我希望绿色变为随机基色,黑色保持黑色,随机颜色变为绿色(65)或变为另一种随机颜色(其中一个删除 55基色)。
实现这个最终功能(使用现有随机颜色补丁的子集)是我正在努力解决的问题。
我已经尝试过 ifelse 和不同的 if 语句,指定询问 n-of somenumber 补丁变成绿色,其余变成随机颜色。这没有用。
to setup-patches ;;PATCHES
ask n-of 400 patches [ set pcolor 65]
ask n-of 600 patches [ set pcolor one-of remove 55 base-colors ]
end
……
to vary-patches
if ticks > 0 and ticks mod 5 = 0 [
ask patches [
if pcolor = 65 [
set pcolor one-of remove 55 base-colors ]
if pcolor = black [
set pcolor 0 ]
if pcolor = one-of remove 65 base-colors [
set pcolor ............................................. ]
end
解决方案
我认为你或多或少在那里,这只是if pcolor = one-of remove 65 base-colors
有问题的。每次评估该语句时,pcolor
都会将其与生成的随机one-of
列表进行比较remove 65 base-colors
- 它不检查是否pcolor
在该组中找到。为此,您需要member?
原语。例如,下面的轻微修改应该可以满足您的需要:
to setup-patches ;;PATCHES
ca
ask n-of 400 patches [ set pcolor 65]
ask n-of 600 patches [ set pcolor one-of remove 55 base-colors ]
reset-ticks
end
to vary-patches
if ticks > 0 and ticks mod 5 = 0 [
ask patches [
if pcolor = 65 [
set pcolor one-of remove 55 base-colors ]
if member? pcolor remove 65 base-colors [
set pcolor one-of base-colors
]
]
]
tick
end
编辑:
to vary-patches
if ticks > 0 and ticks mod 5 = 0 [
ask patches [
ifelse pcolor = 65 [
set pcolor one-of remove 55 base-colors
] [
if member? pcolor remove 65 base-colors [
ifelse random-float 1 < ( 1 / 3 ) [
set pcolor one-of base-colors
] [
set pcolor 65
]
]
]
]
]
tick
end
推荐阅读
- android - 如何在 MPAndroidChart 的 Dataset 和图例中动态添加数据?
- javascript - 我很难从 Promise 派生孩子
- algorithm - 在图算法中找到最短路径
- java - 如何编写 JUnit 测试(用于文件写入)?
- python - 尝试使用用户输入时除外
- ray - 当增加三节点集群中的工作人员数量时,Ray 性能下降
- spring-boot - 如何让 Hystrix Dashboard 在 Spring Boot Admin 2.x 中再次工作
- html - 如何在 React JS 中不使用 jquery 插件使 html 地图响应
- ios - Alamofire 请求未在 swift 5 中执行
- php - 将条件参数传递给 larave 中的 Eager Loading 以错误结束