game of life 小游戏(用SDL实现)

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文件夹下的那个(与操作系统无关,因为VS新建工程一般是win32程序)

game of life 小游戏(用SDL实现)

        (4)在链接器中添加附加库目录,将刚刚第二步的lib目录包含进去;

game of life 小游戏(用SDL实现)

        (5)链接器->系统->子系统中选择控制台,便于调试;

game of life 小游戏(用SDL实现)

        (6)在链接器->输入中,附加依赖项,将刚刚用到的所有.lib文件包含进去;

game of life 小游戏(用SDL实现)

        (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效率更高