1.首先介绍下game of life的游戏规则:
(1)在一个细胞世界,每个细胞的存活状态由他周围细胞的状态决定
(2)若一个细胞周围有三个细胞存活,则不管该细胞上一代为何种状态,该细胞下一代活;
(3)若一个细胞周围有两个细胞存活,则该细胞状态不变;
(4)其他情况,该细胞死
详细规则介绍参考生命游戏-百度百科和Conway's Game of Life-Wiki
2.本文采用的图形界面是SDL2,SDL在VS2010中配置方法如下:
(1)下载sdl开发库:SDL官网
(2)新建空项目,打开项目属性,接下来开始配置sdl环境
(3)在属性->配置属性->vs++目录中,配置包含目录和库目录,将刚刚下载解压之后的文件包含进去,其中库目录两个,一般用x86文件夹下的那个(与操作系统无关);我也不知道为什么;
(4)在链接器中添加附加库目录,将刚刚第二步的lib目录包含进去;
(5)链接器->系统->子系统中选择控制台,便于调试;
(6)在链接器->输入中,附加依赖项,将刚刚用到的所有.lib文件包含进去;
(7)然后把刚刚添加的lib文件拷贝到工程目录下(不然会报错,Mark一下,待解决)
3. 具体实现:
本文的实现采用的是通过SDL_Window和SDL_Surface这两个类实现的,具体实现参考下面的链接。
源码参见本人GitHub链接:game of life-github
接下来说明一下SDL的Window, Surface, Texture, Renderer之间的关系:
1. window和surface
CreateWindow之后,利用GetWindowSurface绑定window和surface,然后就可以利用surface绘制界面,记得绘制完之后通过UpdateWindowSurface更新窗口(忘记之后会无法显示界面)
2. window和renderer :「SDL第二篇」窗口渲染-简书
CreatWindow->CreatRenderer->SetDrawColor->RenderClear->RenderDrawRect->RenderPresent->DestoryRenderer->DestoryWindow
3. window和texture:「SDL第五篇」彻底理解纹理(Texture)-简书
texture与surface类似但比surface效率更高