日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

生命游戏(Game of Life)描述

發(fā)布時間:2025/3/19 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 生命游戏(Game of Life)描述 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、生命游戲(Game of Life)描述
生命游戲是英國數(shù)學家約翰·何頓·康威在1970年發(fā)明的細胞自動機,它包括一個二維矩形世界,這個世界中的每個方格居住著一個活著的或死亡的細胞。一個細胞在下一個時刻生死取決于相鄰八個方格中活著的或死了的細胞的數(shù)量。如果相鄰方格活著的細胞數(shù)量過多,這個細胞會因為資源匱乏而在下一個時刻死去;相反,如果周圍活細胞過少,這個細胞會因太孤單而死去。

游戲在一個類似于圍棋棋盤一樣的,可以無限延伸的二維方格網(wǎng)中進行。(實際實現(xiàn)中,我們采取令左右邊界相接、上下邊界相接的方法模擬無限棋盤的情況)例如,設(shè)想每個方格中都可放置一個生命細胞,生命細胞只有兩種狀態(tài):“生”或“死”。圖中,用黑色的方格表示該細胞為“死”, 其它顏色表示該細胞為“生” 。游戲開始時, 每個細胞可以隨機地(或給定地)被設(shè)定為“生”或“死”之一的某個狀態(tài), 然后,再根據(jù)如下生存定律計算下一代每個細胞的狀態(tài):

  • 每個細胞的狀態(tài)由該細胞及周圍8個細胞上一次的狀態(tài)所決定;
  • 如果一個細胞周圍有3個細胞為生,則該細胞為生,即該細胞若原先為死則轉(zhuǎn)為生,若原先為生則保持不變;
  • 如果一個細胞周圍有2個細胞為生,則該細胞的生死狀態(tài)保持不變;
  • 在其它情況下,該細胞為死,即該細胞若原先為生則轉(zhuǎn)為死,若原先為死則保持不變。
  • 二、代碼重構(gòu)與測試

  • 請閱讀給定的程序代碼(見附件),該游戲包括三部分:
  • · 界面(見下圖):畫布、按鈕等。

    Screen_Shot_2016-01-16_at_15.02.31_1.png

    · 定時器(Timer):定時觸發(fā)時鐘事件,推動演化。

    · 游戲邏輯:給定當前狀態(tài),下一步的演化結(jié)果是什么。

    這三部分的關(guān)系如下:

    · 界面控制定時器(開始)。

    · 定時器每隔一段時間觸發(fā),推動演化。

    · 演化計算完畢后,在界面上更新顯示。

  • 請對上述程序代碼進行重構(gòu),具體要求:
  • · 本游戲的代碼用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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。