细胞自动机! 用OpenGL动态展示兰顿蚂蚁

November 19, 2014 | 16:24

兰顿蚂蚁算法

因为作业要用OpenGL画几条线, 所以我打算画一个简单的细胞自动机. 我们选择最简单的兰顿蚂蚁自动机. 这个自动机的核心算法非常简单:

  • 若蚂蚁在黑格,右转90度,将该格改为白格,向前移一步;
  • 若蚂蚁在白格,左转90度,将该格改为黑格,向前移一步.

首先下载一个glut包, 然后简单配置一下VS2013, 让他可以工作. 然后我们就开始工作.

 

绘图函数

首先我们要开始画格子

 

效果如下

QQ截图201411191439181

 

现在我们要写两个函数, 用格子的坐标就能给格子填充黑色或者白色. 或者说可以对指定格子设定生死.

这样我们简单的通过 setAlive(2, 12) 就能将第3行第13个格子涂成黑色(表示有生命存在); 用setDead(2, 13) 就成将他重新变成白色(没有生命存在的格子)

 

编程表示蚂蚁

主要有两个任务

  1. 建立一个地图数组, 表示地图当中某个格子是否有生命, True代表有, False代表没有. 同时设定蚂蚁的坐标和方向;
  2. 使用glutTimerFunc做出动画效果.

这两个任务的代码如下:

 

运行!

2

完整代码如下:

 

( 转载请注明: Jecvay Notes )

多达 4 条吐槽

说几句