本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個人專欄
本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個人專欄
下載W3Cschool手機App,0基礎(chǔ)隨時隨地學編程>>戳此了解
導語本期我們將制作一個拼圖小游戲。
好吧也許有些幼稚。
不過無論如何,讓我們愉快地開始吧~~~
相關(guān)文件
百度網(wǎng)盤下載鏈接: https://pan.baidu.com/s/1q9VPkOYvI12LjqfQVRCF1Q
密碼: 7wfg
開發(fā)工具
Python版本:3.6.4
相關(guān)模塊:
pygame模塊;
以及一些Python自帶的模塊
環(huán)境搭建
安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。
原理介紹
游戲簡介:
將圖像分為m×n個矩形塊,并將圖像右下角的矩形塊替換為空白塊后,將這些矩形塊隨機擺放成原圖像的形狀。游戲目標為通過移動非空白塊將隨機擺放獲得的圖像恢復成原圖像的模樣,且規(guī)定移動操作僅存在于非空白塊移動到空白塊。
例如下圖所示:

逐步實現(xiàn):
Step1:游戲初始界面
既然是游戲,總得有個初始界面吧?
OK,我們先寫一個游戲初始界面:

效果是這樣子的:

根據(jù)玩家自身水平,可以選擇不同難度的拼圖游戲。
Step2:定義移動操作
定義移動操作的目的是為了移動拼圖(好像是廢話T_T),具體實現(xiàn)起來十分簡單:

Step3:游戲主界面
OK,有了前面的鋪墊,我們可以開始實現(xiàn)我們的游戲主界面了。
首先,我們需要打亂拼圖,但是隨機打亂很可能導致拼圖無解,因此我們通過隨機移動拼圖來實現(xiàn)打亂拼圖的效果,這也是我們先定義拼圖的移動操作的主要原因:

游戲主界面初始化:

最后實現(xiàn)主界面的顯示刷新以及事件響應等功能:

Step4:游戲結(jié)束界面
當玩家完成拼圖后,需要顯示游戲結(jié)束界面,和游戲初始界面類似,實現(xiàn)起來都比較簡單:

OK,大功告成?。?!
游戲效果
在cmd窗口運行Game3.py文件即可。
效果如下: