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

該程式可以實作游戲輪次統計,雙方得分、平局次數統計和重新開始功能,不管是1局決勝負,還是三局兩勝、七局三勝,都能完美解決,
/2 具體實作/
下面給大家詳細介紹一下具體步驟,
第一步:創建游戲主視窗
PyQt5創建主視窗有其固定的套路,首先要創建應用程式物件:app=QApplication(sys.argv),引數sys.argv是命令列引數,這使得可以在電腦系統終端執行程式時,傳入命令引數,來執行不同的邏輯代碼,執行應用程式物件,進入訊息回圈等待退出: sys.exit(app.exec_()),代碼如下圖所示:

其中,GameWindow()是本次游戲的類,視窗大小為900X400
再為該視窗添加標題和圖示如下圖所示:

效果如下圖所示:
對于初學者想更輕松的學好Python開發技術,Python爬蟲,Python大資料分析,人工智能等技術,這里給大家分享一套系統教學資源,加一下我建的Python技術的學習裙;九三七六六七五零九,一起學習,群里有相關開發工具,學習教程,每天還有專業的老司機在線直播分享知識與技術答疑解惑!
第二步:以網格布局方式放控制元件
PyQt5有5種布局方式,分別是絕對布局、水平布局、垂直布局、網格布局和表單布局,本次只采用網格布局,其余布局方式各有特點,感興趣的朋友可以研究一下,
1.我想把整個出視窗分成3x3=9個網格,然后以網格布局的方式往里填內容,首先將“紅方選手”、“第X輪”、“藍方選手”分別放入第一行的3個網格中,

網格布局需要用到addWidget函式,它的上圖中的4個引數分別代表放置的空間、放置行數、放置的列數,上述3個控制元件
分別放在第1行的1-3列,效果如下圖所示:
2.留出“剪刀石頭布”圖片展示位置,分別放置在第二行的1和3網格,

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

這里需要注意一下,我在第二行第二個網格里又嵌入一個新的網格物件,將其分成1個1行3列的網格,其中第1個網格放紅方得分,第二個網格放“VS”,第三個放藍方得分,
3.系結“開始游戲”、“重新開始”信號槽

用QpushButton創建“開始游戲”按鈕,系結gamestart函式(后續還會講),并將該按鈕放入第三行的第二個網格中,

用QpushButton創建“重新開始”按鈕,系結restart函式(后續還會講),并將該按鈕放入第三行的第三個網格中,效果如下圖所示:

現在基本框架已經搭建好了,
第三步:信號槽系結信號
主要是針對開始游戲和重新開始游戲按鈕系結信號,下面給大家介紹一下上述的gamestart和restart函式,
1. gamestart函式
1)游戲開始后,我需要隨機從“剪刀”、“石頭”、“布”三張圖片中選出1張放置到相應位置,代碼如下圖所示:

這里用了red和blue兩個類,每次點擊開始游戲按鈕,都會呼叫該類,用random函式隨機選出圖片,并在相應位置展示,
2)判斷輸贏,實時更新資料

Gamestart下呼叫judge函式,判斷得分,記錄紅方得分、藍方得分、平局次數3個值,并用setText函式立即更新紅方得分框、藍方得分框及平局次數框的內容,
最后,為了避免游戲中不小心點擊關閉視窗按鈕,添加1個關閉事件,如下圖所示,

當點擊右上角叉號時,會進行提示,效果如下圖所示:

到這里,這個小游戲就制作完畢了,界面比較簡單,感興趣的朋友可以繼續開發更高級的功能,
/3 結語/
本文基于PyQt5可視化界面,用PyQt5做個可視化的“剪刀石頭布”小游戲,可以實作游戲輪次統計,雙方得分、平局次數統計和重新開始功能,不管是1局決勝負,還是三局兩勝、七局三勝,都能完美解決,
歡迎大家嘗試,消耗在家的無聊時間,本文涉及的代碼都上傳到了github地址上,后臺回復“剪刀石頭布”五個字即可獲取代碼,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/80862.html
標籤:Python
上一篇:selenium的彈框操作
下一篇:雜碎小知識——函式相關
