【发布时间】:2019-11-07 00:38:57
【问题描述】:
我一直在尝试使用 Netlogo 让我的海龟从墙上“弹起”。
我已经导入了一个 png 文件,其中包含不同表面的颜色(墙壁、界面、液体、加热器,最终还会有更多)。我使用 MSPaint 和来自 netlogo color chart 的颜色图来创建我的形状(一个紫色正方形,边边框为棕色,底部为红色边框,顶部为蓝色边框)
我想做的是让海龟从液体斑块上开始并直线移动,直到它们撞到一个表面(不同颜色的墙)。如果它们撞到墙上,它们应该以随机方向“弹回”,如果它们撞到加热器,它们的温度应该会升高,它们也应该从加热器表面弹回。如果它们撞到界面并且它们的温度高于 100,它们应该通过界面移动,然后在界面上方移动(基本上传送几个像素)。
我遇到的问题是海龟四处移动,它们似乎可以很好地从墙壁上弹起,但它们似乎没有注意到加热器和界面的颜色。我确定我错过了一些基本或明显的东西,但我已经在同样的怪癖上挣扎了三天。任何帮助将不胜感激。
这是我现在拥有的代码: (在这段代码中,无论水温如何,我都将其设置为通过界面“传送”)
globals[ liquid-color heater-color wall-color reflection-color air-color interface-color
liquid heater wall reflection air interface]
breed [h2o water]
to setup
clear-turtles
reset-ticks
clear-all-plots
import-pcolors "boilermap.png"
set liquid-color 115
set heater-color 19
set wall-color 35
set interface-color 105
setup-patches
create-molecules
end
to setup-patches
set heater patches with [pcolor = heater-color]
set heater-color 19
ask heater [set pcolor 19]
set interface patches with [pcolor = interface-color]
set interface-color 105
ask interface [set pcolor 105]
set liquid patches with [pcolor = liquid-color]
set liquid-color 115
ask liquid [set pcolor 115]
set wall patches with [pcolor = wall-color]
set wall-color 35
ask wall [set pcolor 35]
end
to create-molecules
create-h2o (totalmoles * h20number / 100)[
set shape "circle"
set color black
set size 2
set temperature 20
setxy random xcor random ycor
move-to one-of patches with [pcolor = liquid-color]
]
to go
ask h2o [
(ifelse
pcolor = liquid-color[fd 1 ];ifblock
pcolor = heater-color [set temperature temperature + 5]
pcolor = interface-color [set ycor ycor + 100] ;just trying to get them to jump here, regardless of their temperature
;elseblock
[ bk 1
rt random 180]
)]
end
【问题讨论】:
标签: netlogo