日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

太好玩了,我用Python寫了個(gè)火影忍者版的連連看

系統(tǒng) 1875 0

作者:菜鳥小編

公眾號(hào):菜鳥學(xué)Python


暑假馬上就要結(jié)束了,在暑假即將走向尾聲的時(shí)候,小編特地為大家準(zhǔn)備了一款小游戲——連連看。希望通過(guò)這一款小游戲?yàn)榇蠹曳潘缮硇模有聦W(xué)年的到來(lái)。

連連看想必大家都玩過(guò),相同的圖片,可以連在一起消掉,但前提是圖片連接的路徑要是直線,或者是“L”形(連接線有一個(gè)拐彎)或者是類似于“U”形(連接線有兩個(gè)拐彎)。那么程序是如何實(shí)現(xiàn)的呢, 先看一下整個(gè)的設(shè)計(jì)思路

太好玩了,我用Python寫了個(gè)火影忍者版的連連看_第1張圖片

01.

游戲的界面設(shè)計(jì)

1).首先是對(duì)于整體界面的設(shè)計(jì),如下圖所示:

太好玩了,我用Python寫了個(gè)火影忍者版的連連看_第2張圖片

大家運(yùn)行程序后,會(huì)首先彈出選擇框, 是否從第一關(guān)開始,選擇第一關(guān)后,點(diǎn)擊游戲便可以開始游戲。我們?cè)O(shè)計(jì)了一個(gè)菜單,點(diǎn)擊游戲/開始游戲即可!

02.

把火影忍者的人物放畫布

接下來(lái)就是將游戲人物放到畫布上去,這里我們選擇了我最喜歡的火影忍者的頭像,哈哈!


1).首先程序規(guī)定了每一個(gè)種類圖片

圖片所能出現(xiàn)的次數(shù)為4次,然后如果我們想實(shí)現(xiàn)一個(gè)8x8大小的圖片地圖,那么就一共有8x8/4=16種類型的圖片可以出現(xiàn)。我們將每一種類型圖片編碼為一個(gè)數(shù)字,例如上圖中鳴人的編號(hào)為0,小櫻的編號(hào)為1。然后在對(duì)應(yīng)到圖片上去,所以就會(huì)得到16(種類)x4(每個(gè)種類的圖片數(shù)量)=64個(gè)圖片,如下圖所示:

640

2).然后,我們將上述的圖片打亂

按照畫布上的位置分別放置圖片,就得到了連連看的圖片界面。

太好玩了,我用Python寫了個(gè)火影忍者版的連連看_第3張圖片

3).部分代碼如下圖所示

太好玩了,我用Python寫了個(gè)火影忍者版的連連看_第4張圖片

該函數(shù)是對(duì)畫布圖片進(jìn)行一個(gè)初始化:

  • 首先,是將每一個(gè)類別的小圖片都添加self.num張,形成一個(gè)self.picsKind * self.num大小的一維數(shù)組;

  • 然后,將小圖片的索引順序進(jìn)行打亂;

  • 最后,是將小圖片的索引轉(zhuǎn)化為一個(gè)二維數(shù)組,也就是呈現(xiàn)給大家的一個(gè)正方形的界面。

太好玩了,我用Python寫了個(gè)火影忍者版的連連看_第5張圖片

這里是將我們存放到self.pics里面的圖片,通過(guò)函數(shù)self. get_left_top_point函數(shù)來(lái)獲得其對(duì)應(yīng)的坐標(biāo),并按照此坐標(biāo)將圖片放置到畫布的相應(yīng)位置。

其中有一點(diǎn)應(yīng)用的很是巧妙,就是利用索引來(lái)作為判斷是否是一類圖片的標(biāo)志(后面有代碼示例的) ,接下來(lái)就是進(jìn)行圖片的消除,如下圖所示。

太好玩了,我用Python寫了個(gè)火影忍者版的連連看_第6張圖片

03.

核心算法解釋

敲黑板劃重點(diǎn)來(lái)了, 只有符合上述三種情況的圖片我們才能夠消除,那么程序如何判斷二者是否符合被消除的條件呢?

  • 我們以直線連接為例。上圖中可以直線連接的兩個(gè)佐助橫縱坐標(biāo)分別為(2,3)和(3,3),那么我們就判斷他們x坐標(biāo)(直線連接,橫縱坐標(biāo)肯定有一個(gè)相等,就不用判斷相等的坐標(biāo)了);

  • 如果他們中間沒(méi)有其他的圖片,那么他們就可以被連接然后消掉,否則就不可以;

例如(4,4)和(4,6)的小櫻之間有一個(gè)其他人的存在,他們就不能被連接,其他的情況也是類似判斷,部分代碼如下圖所示:


太好玩了,我用Python寫了個(gè)火影忍者版的連連看_第7張圖片

上面的3中連接方法( 直連,L型連接和U型連接) 。當(dāng)我們判斷二者可以連接后,利用tkinter的畫布中的delete函數(shù),便可以將圖片刪掉。部分程序如下所示:


太好玩了,我用Python寫了個(gè)火影忍者版的連連看_第8張圖片

當(dāng)我們將所有的圖片都消掉后,程序便會(huì)彈出提示框,祝賀我們闖關(guān)成功。下面,小編就為大家?guī)?lái)視頻展示,看看小編的功力如何。

(連連看運(yùn)行視頻)


怎么樣看完視頻,是不是感覺(jué)還不錯(cuò), 唯一美中不足的就是沒(méi)有加入聲音。 大家如果有興趣的可以拿著完整的源碼改改,看看能否優(yōu)化和加入聲音,這樣效果更佳!


需要源碼,后臺(tái)輸入:【連連看】


往期閱讀

速來(lái)!免費(fèi)包郵送35本經(jīng)典Python書籍

企業(yè)難尋AI人才,求職者就業(yè)難,如何破局?


漲姿勢(shì)|一位資深的Python大牛,有趣有料


太好玩了,我用Python寫了個(gè)火影忍者版的連連看_第9張圖片




更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 淮滨县| 宜兰市| 阿合奇县| 抚宁县| 盖州市| 青川县| 淮阳县| 淅川县| 永靖县| 龙州县| 和林格尔县| 涟源市| 大兴区| 楚雄市| 法库县| 山东| 遂平县| 体育| 平泉县| 东平县| 新乡市| 彭山县| 甘泉县| 和硕县| 鄂尔多斯市| 屏南县| 新安县| 太仆寺旗| 扬州市| 呼和浩特市| 前郭尔| 屏东市| 萨迦县| 阳朔县| 光泽县| 杭锦后旗| 武宣县| 亳州市| 白朗县| 二连浩特市| 多伦县|