首頁>技術>

/1 前言/

最近在學習PyQt5視覺化介面,這是一個內容非常豐富的gui庫,相對於tkinter庫,功能更加強大,介面更加美觀,操作也不難。於是我開始小試牛刀,用PyQt5做個視覺化的“剪刀石頭布”小遊戲,總體效果如下:

該程式可以實現遊戲輪次統計,雙方得分、平局次數統計和重新開始功能,不管是1局決勝負,還是三局兩勝、七局三勝,都能完美解決。

/2 具體實現/

下面給大家詳細介紹一下具體步驟。

第一步:建立遊戲主視窗

PyQt5建立主視窗有其固定的套路,首先要建立應用程式物件:app=QApplication(sys.argv),引數sys.argv是命令列引數,這使得可以在電腦系統終端執行程式時,傳入命令引數,來執行不同的邏輯程式碼。執行應用程式物件,進入訊息迴圈等待退出: sys.exit(app.exec_()),程式碼如下圖所示:

其中,GameWindow()是本次遊戲的類,視窗大小為900X400

再為該視窗新增標題和圖示如下圖所示:

效果如下圖所示:

第二步:以網格佈局方式放控制元件

PyQt5有5種佈局方式,分別是絕對佈局、水平佈局、垂直佈局、網格佈局和表單佈局,本次只採用網格佈局,其餘佈局方式各有特點,感興趣的朋友可以研究一下。

1.我想把整個出視窗分成3x3=9個網格,然後以網格佈局的方式往裡填內容,首先將“紅方選手”、“第X輪”、“藍方選手”分別放入第一行的3個網格中。

網格佈局需要用到addWidget函式,它的上圖中的4個引數分別代表放置的空間、放置行數、放置的列數,上述3個控制元件分別放在第1行的1-3列。效果如下圖所示:

2.留出“剪刀石頭布”圖片展示位置,分別放置在第二行的1和3網格。

第二行中間網格放置紅藍雙方得分情況。

這裡需要注意一下,我在第二行第二個網格里又嵌入一個新的網格物件,將其分成1個1行3列的網格,其中第1個網格放紅方得分,第二個網格放“VS”,第三個放藍方得分。

3.繫結“開始遊戲”、“重新開始”訊號槽

現在基本框架已經搭建好了。

第三步:訊號槽繫結訊號

1. gamestart函式

1)遊戲開始後,我需要隨機從“剪刀”、“石頭”、“布”三張圖片中選出1張放置到相應位置,程式碼如下圖所示:

2)判斷輸贏,實時更新資料

Gamestart下呼叫judge函式,判斷得分,記錄紅方得分、藍方得分、平局次數3個值,並用setText函式立即更新紅方得分框、藍方得分框及平局次數框的內容。

到這裡,這個小遊戲就製作完畢了,介面比較簡單,感興趣的朋友可以繼續開發更高階的功能。

/3 結語/

本文基於PyQt5視覺化介面,用PyQt5做個視覺化的“剪刀石頭布”小遊戲,可以實現遊戲輪次統計,雙方得分、平局次數統計和重新開始功能,不管是1局決勝負,還是三局兩勝、七局三勝,都能完美解決。

歡迎大家嘗試,消耗在家的無聊時間。本文涉及的程式碼都上傳到了github地址上,後臺回覆“剪刀石頭布”五個字即可獲取程式碼。

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 「轉」一文詳解:從前端菜鳥到頂級全棧大牛