首先假设每个瓦片(画面由一格格组成,每个小格称为一个瓦片,NetLogo世界是由“瓦片”构成的二维网格,瓦片是网格中的一个方格。可以把瓦片想象成地板上铺的方形瓷砖)所代表的每个方形小格水体含10个单位氧气。
接着设想一下这些箭头代表某种生物(初始为10个能量),它们生活在水中,它们在水中移动,移动的同时做了以下事情:
氧气不足的水体方格产生氧气(每次产生),generate-oxygen函数,每次产生0.1个单位,并将方格的色彩慢慢变浅。
移动要消耗能量(一次消耗2个单位),没有能量将无法移动。
无论是否移动都要呼吸(一次消耗2个单位所处新位置的氧气)。
海龟如果没有能量了,就会死亡。
麦好的AI乐园博客所有内容是原创,如果转载请注明来源
http://blog.csdn.net/myhaspl/
最后通过以下菜单增加一个监控器,在监控器中输入
cout turtles
可以动态显示海龟的存活数量(初始值为100)
界面不变化,将代码改为:
;code:myhaspl@myhaspl.com
;date:2014-01-24
turtles-own [energy]
patches-own [oxygen]
to setup
clear-all
create-turtles 100
setup-turtles
setup-patches
end
to go
die-turtles
generate-oxygen
move-turtles
breathe
end
to generate-oxygen
ask patches [
if oxygen <= 0 [
set pcolor 100
]
if oxygen < 10[
set oxygen (oxygen + 0.1)
if pcolor <= 109 [
set pcolor pcolor + 0.1
]
]
if oxygen >= 10[
set pcolor 109
set oxygen 10
]
]
end
to move-turtles
ask turtles [
if energy > 0[
right random 360
forward 1
set energy (energy - 1)
]
]
end
to breathe
ask turtles [
if oxygen > 0 [
set oxygen (oxygen - 2)
if energy < 10[
set energy (energy + 2)
]
if pcolor >= 100 [
set pcolor pcolor - 0.1
]
]
]
end
to setup-patches
ask patches[
set pcolor 109
set oxygen 10
]
end
to setup-turtles
ask turtles[
setxy random-xcor random-ycor
set energy 10
]
end
to die-turtles
ask turtles[
if energy <= 0[
die
]
]
end
初始化为:
麦好的AI乐园博客所有内容是原创,如果转载请注明来源
http://blog.csdn.net/myhaspl/
运行后,可看到下图,部分区域的氧气已经用完,变成黑色,而部分区域的氧气正在恢复中,慢慢变浅,海龟的数量也减少到38个。