PyQt挖地雷遊戲學習筆記(3),pyqt學習筆記

來源:互聯網
上載者:User

PyQt挖地雷遊戲學習筆記(3),pyqt學習筆記

這個程式使用了Python有特色的文法套路。先看第一個。

main.py裡的class MainWindow的函數init()中,有這樣的語句:

self.scene.setMap((conf.w, conf.h), conf.mines)

這裡的變數conf,定義在config.py中,由以下語句引入的:

from config import *

這裡的conf.w,conf.h和conf.mines是什麼呢?由此,轉入config.py,一探究竟。

#module: configimport json    DEFAULTS = {    'splash':False,    'w': 10,    'h': 10,    'mines': 1,    'scores': [],    }DEFAULT_SAVE_FILE = "config.cfg"class _Conf:    def __getattr__(self,name):        return DEFAULTS[name]    def __setattr__(self,name,value):        if type(value) != type(DEFAULTS[name]):            raise Exception("%s %s is not %s:" %                             (value, type(value), type(DEFAULTS[name])))        DEFAULTS[name] = value    def save(self,fileName=DEFAULT_SAVE_FILE):        with open(fileName, 'w+') as fp:            json.dump(DEFAULTS, fp, indent=True)                def load(self,fileName=DEFAULT_SAVE_FILE):        with open(fileName, 'r') as fp:            global DEFAULTS            DEFAULTS = json.load(fp)conf = _Conf()try:    conf.load()except:    pass

由此可見,main.py匯入該模組,會發生以下事情:

建立並初始化模組層級變數,詞典DEFAULTS;

建立並初始化模組層級變數,DEFAULT_SAVE_FILE = "config.cfg"

建立模組層級變數conf,並以此執行個體化 _Conf;

以conf引用 _Conf中的函數load(),把config.cfg檔案中的資料,讀入DEFAULTS。

遍觀 _Conf,並沒有成員變數w,h和mines,但為何使用conf.w,conf.h和conf.mines呢?

奧妙在於 _Conf中的特別函數 __getattr__(name)

當以conf.w讀資料時,__getattr__ 的參數name的值,就是“w”,

而它返回的值,是DEFAULTS[“w”]。這個值等於10。

Python的這一文法套路,讀取詞典DEFAULTS的操作,表現形式成了訪問class的成員。


挖地雷遊戲設計

我曾經寫過一個掃雷,不過應為不會使用滑鼠硬體參數,我的掃雷是每步都用鍵盤輸入想點擊的座標實現的
給你講講過程吧
1.首先是初始化:建立一個21*21的數組,最外邊加一層牆,填入-1,然後隨機放10個地雷
2.然後是點擊部分,重點!
分類(1),如果是點到地雷了->GAME OVER...
分類(2),點到數字了(旁邊有雷),就是判斷四周的格子有幾個雷,顯示
分類(3),四周都沒有雷,這裡用動態規劃,一直延伸到周圍全是數字包圍(包括牆上的-1)這是痛點
3.勝利判斷就簡單了,一直記錄剩餘的地雷就行了
 
錯誤提示

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.