掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
Windows XP 上的掃雷是無(wú)數(shù)80/90后的集體回憶,今天我們就用 Python 來(lái)制作一個(gè)高仿版的掃雷游戲。

成都創(chuàng)新互聯(lián)自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元南城做網(wǎng)站,已為上家服務(wù),為南城各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
原諒我手殘,掃雷基本就沒(méi)贏過(guò),測(cè)試的時(shí)候我是偷偷的把雷的數(shù)量從99改到50才贏了。。。
下面講一下我的實(shí)現(xiàn)邏輯。
首先,如何表示雷和非雷,一開(kāi)始想的是,建立一個(gè)二維數(shù)組表示整個(gè)區(qū)域,0表示非地雷,1表示地雷。后來(lái)一想不對(duì),還有標(biāo)記為地雷,標(biāo)記為問(wèn)號(hào),還有表示周邊雷數(shù)的數(shù)字,好多狀態(tài),干脆就做個(gè)類吧:
布雷就很簡(jiǎn)單了,隨機(jī)取99個(gè)數(shù),從上往下順序排就是了:
我們點(diǎn)擊一個(gè)格子的時(shí)候,只要根據(jù)點(diǎn)擊的坐標(biāo),找到對(duì)應(yīng)的 Mine,看它的值是多少,就知道有沒(méi)有踩中雷了。
如果沒(méi)踩中雷的話,要計(jì)算周邊8個(gè)位置中有幾個(gè)雷,以便顯示對(duì)應(yīng)的數(shù)字。
如果周邊有雷,那么顯示數(shù)字,這個(gè)簡(jiǎn)單,可是如果周邊沒(méi)有雷,那就要顯示一片區(qū)域,直到有雷出現(xiàn),如下圖,我只點(diǎn)了當(dāng)中一下,就出現(xiàn)了那么大一片區(qū)域
這個(gè)計(jì)算其實(shí)也容易,只要用遞歸就可以了,如果計(jì)算出周圍的雷數(shù)為0,則遞歸計(jì)算周邊8個(gè)位置的四周雷數(shù),直到雷數(shù)不為0。
接下來(lái)還有一個(gè)麻煩的地方,我們經(jīng)常鼠標(biāo)左右鍵同時(shí)按下,如果雷被全部標(biāo)記,則會(huì)一下子打開(kāi)周圍所有的格子,如果其中有標(biāo)記錯(cuò)的,那么不好意思,GAME OVER。
如果沒(méi)有全標(biāo)記完,會(huì)有一個(gè)效果顯示周圍一圈未被打開(kāi)和標(biāo)記的格子
掃雷的主要邏輯就這么多,剩下來(lái)的就是一些雜七雜八的事件了。當(dāng)然,這些雜七雜八的事件也還是夠你折騰一番的。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流