生命游戏(Game of Life)描述
一、生命游戲(Game of Life)描述
生命游戲是英國數(shù)學家約翰·何頓·康威在1970年發(fā)明的細胞自動機,它包括一個二維矩形世界,這個世界中的每個方格居住著一個活著的或死亡的細胞。一個細胞在下一個時刻生死取決于相鄰八個方格中活著的或死了的細胞的數(shù)量。如果相鄰方格活著的細胞數(shù)量過多,這個細胞會因為資源匱乏而在下一個時刻死去;相反,如果周圍活細胞過少,這個細胞會因太孤單而死去。
游戲在一個類似于圍棋棋盤一樣的,可以無限延伸的二維方格網(wǎng)中進行。(實際實現(xiàn)中,我們采取令左右邊界相接、上下邊界相接的方法模擬無限棋盤的情況)例如,設(shè)想每個方格中都可放置一個生命細胞,生命細胞只有兩種狀態(tài):“生”或“死”。圖中,用黑色的方格表示該細胞為“死”, 其它顏色表示該細胞為“生” 。游戲開始時, 每個細胞可以隨機地(或給定地)被設(shè)定為“生”或“死”之一的某個狀態(tài), 然后,再根據(jù)如下生存定律計算下一代每個細胞的狀態(tài):
二、代碼重構(gòu)與測試
· 界面(見下圖):畫布、按鈕等。
Screen_Shot_2016-01-16_at_15.02.31_1.png
· 定時器(Timer):定時觸發(fā)時鐘事件,推動演化。
· 游戲邏輯:給定當前狀態(tài),下一步的演化結(jié)果是什么。
這三部分的關(guān)系如下:
· 界面控制定時器(開始)。
· 定時器每隔一段時間觸發(fā),推動演化。
· 演化計算完畢后,在界面上更新顯示。
· 本游戲的代碼用Python3.x實現(xiàn),至少使用觀察者模式進行重構(gòu)。(提示:這里存在兩對觀察者與被觀察者,分別是Model類觀察RepeatableTimer和GUI觀察Model)
· 用戶界面、游戲演化邏輯盡可能獨立。
· 考慮如何對本游戲進行單元測試,并完成單元測試(使用unittest庫編寫測試代碼)。
· 不能引用第三方庫。
三、代碼分享說明
本部分是選做內(nèi)容,不計入課程成績。希望同學們在下面討論區(qū)中分享重構(gòu)后的源代碼和單元測試源代碼,請列出代碼地址鏈接并說明自己的設(shè)計思路。(1) 重構(gòu)后的源程序,要求代碼規(guī)范并正確使用設(shè)計模式。
(2) 單元測試代碼,要求測試用例設(shè)計完整,測試代碼正確。
總結(jié)
以上是生活随笔為你收集整理的生命游戏(Game of Life)描述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件工程中的需求分析
- 下一篇: quick sort