1.首先介紹下game of life的游戲規(guī)則:
? ? ? ? (1)在一個(gè)細(xì)胞世界晶默,每個(gè)細(xì)胞的存活狀態(tài)由他周?chē)?xì)胞的狀態(tài)決定
? ? ? ? (2)若一個(gè)細(xì)胞周?chē)腥齻€(gè)細(xì)胞存活寄悯,則不管該細(xì)胞上一代為何種狀態(tài),該細(xì)胞下一代活蔗牡;
? ? ? ? (3)若一個(gè)細(xì)胞周?chē)袃蓚€(gè)細(xì)胞存活痘煤,則該細(xì)胞狀態(tài)不變拨与;
? ? ? ? (4)其他情況哩治,該細(xì)胞死
詳細(xì)規(guī)則介紹參考生命游戲-百度百科和Conway's Game of Life-Wiki
2.本文采用的圖形界面是SDL2张肾,SDL在VS2010中配置方法如下:
????????(1)下載sdl開(kāi)發(fā)庫(kù):SDL官網(wǎng)
????? ? (2)新建空項(xiàng)目,打開(kāi)項(xiàng)目屬性锚扎,接下來(lái)開(kāi)始配置sdl環(huán)境
????????(3)在屬性->配置屬性->vs++目錄中,配置包含目錄和庫(kù)目錄馁启,將剛剛下載解壓之后的文件包含進(jìn)去驾孔,其中庫(kù)目錄兩個(gè),一般用x86文件夾下的那個(gè)(與操作系統(tǒng)無(wú)關(guān))惯疙;我也不知道為什么翠勉;
????????(4)在鏈接器中添加附加庫(kù)目錄,將剛剛第二步的lib目錄包含進(jìn)去霉颠;
????????(5)鏈接器->系統(tǒng)->子系統(tǒng)中選擇控制臺(tái)对碌,便于調(diào)試;
????????(6)在鏈接器->輸入中蒿偎,附加依賴(lài)項(xiàng)朽们,將剛剛用到的所有.lib文件包含進(jìn)去;
????????(7)然后把剛剛添加的lib文件拷貝到工程目錄下(不然會(huì)報(bào)錯(cuò)诉位,Mark一下骑脱,待解決)
3. 具體實(shí)現(xiàn):
????????本文的實(shí)現(xiàn)采用的是通過(guò)SDL_Window和SDL_Surface這兩個(gè)類(lèi)實(shí)現(xiàn)的,具體實(shí)現(xiàn)參考下面的鏈接苍糠。
????????源碼參見(jiàn)本人GitHub鏈接:game of life-github
????????接下來(lái)說(shuō)明一下SDL的Window, Surface, Texture, Renderer之間的關(guān)系:
????????1. window和surface
????????CreateWindow之后叁丧,利用GetWindowSurface綁定window和surface,然后就可以利用surface繪制界面岳瞭,記得繪制完之后通過(guò)UpdateWindowSurface更新窗口(忘記之后會(huì)無(wú)法顯示界面)
????????2. window和renderer :「SDL第二篇」窗口渲染-簡(jiǎn)書(shū)
????????CreatWindow->CreatRenderer->SetDrawColor->RenderClear->RenderDrawRect->RenderPresent->DestoryRenderer->DestoryWindow
????????3. window和texture:「SDL第五篇」徹底理解紋理(Texture)-簡(jiǎn)書(shū)
????????texture與surface類(lèi)似但比surface效率更高