Step4: 自定义显示方式

在GAML中代理族的显示方式,由族定义中的aspect关键字控制,在之前的定义中食草动物(prey)和食肉动物(predator)都显示为圆形。

	//显示方式:大小为size的圆,颜色为color
	aspect base {
		draw circle(size) color: color;
	}

而除了显示为几何图形(常见的有circlesquaretriangle等)之外,GAML还能实现其他几种方式:

  • icon:通过image_file 将代理显示为自定义图标。

  • info: 通过文字信息直接显示数据信息。

  • 更多使用方式,可在官方文档搜索 "draw"查询

下面我们来为模型定义图标显示及数据信息显示:

在父族中添加显示方式

同样为了避免重复的编写我们在父族中定义不同的显示方式,通过子族中初始化不同的变量来实现,子族显示的不同。

species generic_species {
    ...
    //添加my_icon属性,其数据类型为image_file
    image_file my_icon;
    ...
    //显示方式base,显示为圆形,大小为size,颜色为color
    aspect base {
        draw circle(size) color: color ;
    }
    //显示方式icon,显示为my_icon,大小为2*size
    aspect icon {
        draw my_icon size: 2 * size ;
    }
    //显示方式info,显示为方形+能量值(精度到小数点后两位)
    aspect info {
        draw square(size) color: color ;
        draw string(energy with_precision 2) size: 3 color: #black ;
    }
}

子族-食草动物

TIPS:为了方便管理,GAMA的依赖文件都存储在includes文件夹

4.4.1 食草动物图标

食草动物图标如上,为了代码生效,需将食草动物图标下载(下载链接)到项目文件夹的 includes/data/ 文件夹中,并将图片名称修改为predator_prey_sheep.png

子族-食肉动物

4.4.2 食肉动物图标

同样的,将食肉动物图标下载(下载链接)到项目文件夹的 includes/data/ 文件夹中,并将图片名称修改为predator_prey_wolf.png

实验显示

接下来更改experiment中的显示方式,在主窗口中将食草动物和食肉动物的显示方式改为icon,然后新建一个信息展示窗口,信息展示窗口中,食草动物和食肉动物的显示方式设置为info。

本节完整代码如下:

开始模拟,模拟界面将会出现两个窗口:main_display 和 info_display:

4.4.3 main_display
4.4.4 info_display

Last updated

Was this helpful?