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

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

效果是這樣子的:

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

Step3:游戲主界面
OK,有了前面的鋪墊,我們可以開(kāi)始實(shí)現(xiàn)我們的游戲主界面了。
首先,我們需要打亂拼圖,但是隨機(jī)打亂很可能導(dǎo)致拼圖無(wú)解,因此我們通過(guò)隨機(jī)移動(dòng)拼圖來(lái)實(shí)現(xiàn)打亂拼圖的效果,這也是我們先定義拼圖的移動(dòng)操作的主要原因:

游戲主界面初始化:

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

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

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