0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用python做一個(gè)三階拼圖

電子工程師 ? 來(lái)源:lq ? 2019-02-16 10:37 ? 次閱讀

今天是年假的最后一天,明天大家就要回到各自的工作崗位上去,公眾號(hào)從今天開(kāi)始恢復(fù)更新。不知道大家假期過(guò)得怎么樣,帥張?zhí)岬郊倨诙嚓P(guān)注一些家里的變化,自己也記錄了點(diǎn)東西,準(zhǔn)備今天整理下跟大家分享,可是過(guò)了這一個(gè)假期,自己狀態(tài)全無(wú),不知道大家會(huì)不會(huì)跟我一樣有節(jié)后焦慮癥,不能很快恢復(fù)之前的工作狀態(tài),最后還是寫(xiě)點(diǎn)簡(jiǎn)單有意思的技術(shù)文分享給大家,希望大家在輕松的狀態(tài)下開(kāi)始工作。

今天這篇文章比較有意思,用python做一個(gè)三階拼圖,自己寫(xiě)這個(gè)程序的出發(fā)點(diǎn)很簡(jiǎn)單,就是為了哄自己的小外甥玩,不過(guò)他好像不是特別感興趣,那又怎樣。話不多說(shuō),我們開(kāi)始學(xué)習(xí)吧。

程序介紹

先上圖讓大家感受一下

程序的功能很簡(jiǎn)單,還是之前我們用到的pygame和隨機(jī)數(shù)的知識(shí),整個(gè)流程非常的清晰,但是我們需要注意:該游戲如果直接在地圖的二維數(shù)組上進(jìn)行隨機(jī)打亂,是會(huì)很大幾率出現(xiàn)無(wú)解的情況。所以,我是在拼好的基礎(chǔ)上采用隨機(jī)移動(dòng)(按照游戲規(guī)則來(lái)移動(dòng))的思路進(jìn)行地圖打亂。

具體實(shí)現(xiàn)

隨意的找一張照片跟代碼文件放在同一文件文件夾下就可以。

importrandomimportpygame#初始化pygame.init()#窗口標(biāo)題pygame.display.set_caption('Ahab雜貨鋪拼圖游戲')#窗口大小s=pygame.display.set_mode((1200,600))

然后進(jìn)行游戲初始化,設(shè)置標(biāo)題和游戲界面的大小。

#繪圖地圖imgMap=[[0,1,2],[3,4,5],[6,7,8]]#判斷勝利的地圖winMap=[[0,1,2],[3,4,5],[6,7,8]]

繪制初始地圖并且設(shè)置勝利地圖,這里使用數(shù)組的方式進(jìn)行處理。

#游戲的單擊事件defclick(x,y,map):ify-1>=0andmap[y-1][x]==8:map[y][x],map[y-1][x]=map[y-1][x],map[y][x]elify+1<=?2?and?map[y?+?1][x]?==?8:????????map[y][x],?map[y?+?1][x]?=?map[y?+?1][x],?map[y][x]????elif?x?-?1?>=0andmap[y][x-1]==8:map[y][x],map[y][x-1]=map[y][x-1],map[y][x]elifx+1<=?2?and?map[y][x?+?1]?==?8:????????map[y][x],?map[y][x?+?1]?=?map[y][x?+?1],?map[y][x]

這里需要設(shè)置游戲的點(diǎn)擊事件,簡(jiǎn)單的說(shuō)就是鼠標(biāo)點(diǎn)擊圖片進(jìn)行移動(dòng)的邏輯,主要的邏輯代碼就是做了if判斷,比較容易理解。

#打亂地圖defrandMap(map):foriinrange(1000):x=random.randint(0,2)y=random.randint(0,2)click(x,y,map)

使用隨機(jī)數(shù)的方式將地圖進(jìn)行打亂。

#加載圖片img=pygame.image.load('2.jpg')#隨機(jī)地圖randMap(imgMap)#游戲主循環(huán)whileTrue:#延時(shí)32毫秒,相當(dāng)于FPS=30pygame.time.delay(32)foreventinpygame.event.get():#窗口的關(guān)閉事件ifevent.type==pygame.QUIT:exit()elifevent.type==pygame.MOUSEBUTTONDOWN: ifpygame.mouse.get_pressed()==(1,0,0): mx,my=pygame.mouse.get_pos() ifmx

加載我們的照片,并且將地圖進(jìn)行隨機(jī)打亂。設(shè)置游戲的主循環(huán),獲取鼠標(biāo)的坐標(biāo),判斷鼠標(biāo)是否在操作范圍內(nèi),計(jì)算鼠標(biāo)點(diǎn)擊的圖塊,判斷操作是否成功。

#背景色填充成綠色s.fill((0,255,0))#繪圖foryinrange(3):forxinrange(3):i=imgMap[y][x]ifi==8:#8號(hào)圖塊不用繪制continuedx=(i%3)*166#計(jì)算繪圖偏移量dy=(int(i/3))*166s.blit(img,(x*166,y*166),(dx,dy,166,166))#畫(huà)參考圖片s.blit(img,(500,0))#刷新界面pygame.display.flip()

將背景進(jìn)行填充,繪制圖片和設(shè)置參考圖片。

寫(xiě)在最后

總之,新的一年,新的開(kāi)始,一起努力吧。代碼已經(jīng)上傳到Github。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4723

    瀏覽量

    68240
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4768

    瀏覽量

    84378

原文標(biāo)題:如何用Python做三階拼圖?

文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    三階互調(diào)失真的測(cè)量教材

    三階互調(diào)失真的測(cè)量教材 內(nèi)容提要:三階互調(diào)失真(IMD)是由通信系統(tǒng)中的非線性因素而產(chǎn)生的,它將對(duì)其它通信系統(tǒng)產(chǎn)生嚴(yán)重的干擾。在本文中,介紹了三階互調(diào)產(chǎn)生的原因;并簡(jiǎn)要介紹了測(cè)試方法和所需設(shè)備。 [/hide
    發(fā)表于 11-04 15:40

    設(shè)計(jì)個(gè)三階帶通濾波器

    設(shè)計(jì)個(gè)電容間隙耦合三階帶通濾波器(基于耦合矩陣)想請(qǐng)問(wèn)下先從哪兒入手,是不是先確定耦合矩陣,電容間隙耦合又應(yīng)該怎么設(shè)計(jì),能否請(qǐng)大神們提供
    發(fā)表于 03-16 17:42

    請(qǐng)問(wèn)這兩個(gè)三階濾波π型如何計(jì)算?

    請(qǐng)問(wèn)這兩個(gè)三階濾波電路如何推導(dǎo)?
    發(fā)表于 01-17 18:29

    怎樣去設(shè)計(jì)三階環(huán)路濾波器?求過(guò)程

    怎樣去設(shè)計(jì)三階環(huán)路濾波器?如何對(duì)三階環(huán)路濾波器進(jìn)行驗(yàn)證測(cè)試?
    發(fā)表于 05-20 06:23

    請(qǐng)問(wèn)你們是怎么設(shè)計(jì)三階LPF的?有這方面的資料嗎?

    我們現(xiàn)在要設(shè)計(jì)個(gè).18工藝下的頻率合成器(四鎖相環(huán))。我現(xiàn)在想知道怎么去設(shè)計(jì)三階LPF,我預(yù)計(jì)的方法是先用某種方法算得LPF各元件的初值,然后帶入到ADS的PLL設(shè)計(jì)模板中進(jìn)行交流
    發(fā)表于 06-25 07:16

    APM的三階互補(bǔ)方案

    前文講到APM的三階互補(bǔ)方案,之前附的圖是從學(xué)長(zhǎng)博客里面摳的,感覺(jué)還不是很詳細(xì),于是自己就畫(huà)了下,順便重新理下思路。上圖中下標(biāo)為O的表示原始量(Origion),C表示矯正后的量
    發(fā)表于 08-06 06:37

    HDI PCB一階和二三階如何區(qū)分呢?

    HDI PCB一階和二三階如何區(qū)分??最有有鉆孔建構(gòu)圖說(shuō)明,謝謝!
    發(fā)表于 04-06 17:45

    介紹PCB一階、二、三階電路的概念和劃分方法

      在PCB設(shè)計(jì)中,般將電路中的各個(gè)元件及其連接線路按照信號(hào)傳輸?shù)募?jí)別進(jìn)行分類(lèi),常見(jiàn)的有一階、二、三階電路等。這些數(shù)的劃分通常是根據(jù)信
    發(fā)表于 04-11 15:05

    三階不對(duì)稱(chēng)濾波器電路

    三階不對(duì)稱(chēng)濾波器電路 三階濾波器有兩路輸出UA1和UA2,前者為高通濾波輸出,后者為低通濾波輸出。
    發(fā)表于 12-07 17:52 ?1905次閱讀
    <b class='flag-5'>三階</b>不對(duì)稱(chēng)濾波器電路

    三階繼電器通斷與電壓量測(cè)

    繼電器的測(cè)量,三階的,應(yīng)用于工業(yè)控制方面。
    發(fā)表于 03-09 10:47 ?12次下載

    三階Volterra自適應(yīng)濾波算法

    三階Volterra自適應(yīng)濾波算法_嚴(yán)平平
    發(fā)表于 01-07 16:06 ?1次下載

    HDI PCB的一階,二三階是如何區(qū)分的?詳細(xì)案例說(shuō)明

    中是,兩個(gè)一階的孔重疊,通過(guò)疊加方式實(shí)現(xiàn)二,加工也類(lèi)似兩個(gè)一階,但有很多工藝要點(diǎn)要特別控制,也就是上面所提的。第
    的頭像 發(fā)表于 09-15 10:51 ?6.2w次閱讀
    HDI PCB的<b class='flag-5'>一階</b>,二<b class='flag-5'>階</b>和<b class='flag-5'>三階</b>是如何區(qū)分的?詳細(xì)案例說(shuō)明

    HDI PCB一階和二三階依靠什么來(lái)區(qū)分

    一階板,次壓合即成,可以想像成最普通的板二板,兩次壓合,以盲埋孔的八層板為例,先做2-7層的板,壓好,這時(shí)候2-7的通孔埋孔已經(jīng)做好了,再加1層和8層壓上去,打1-8的通孔,做成整板。三階
    的頭像 發(fā)表于 11-20 17:13 ?1.3w次閱讀
    HDI PCB<b class='flag-5'>一階</b>和二<b class='flag-5'>階</b>和<b class='flag-5'>三階</b>依靠什么來(lái)區(qū)分

    三階互調(diào)截點(diǎn)的公式

    對(duì)于三階互調(diào)截點(diǎn)的公式,因?yàn)槠綍r(shí)的比較多,所以比較熟悉。
    的頭像 發(fā)表于 02-22 16:42 ?3294次閱讀

    測(cè)量三階交調(diào)失真,雙音信號(hào)的間距怎么選擇?

    是非線性系統(tǒng)中非線性度的結(jié)果。當(dāng)同時(shí)向個(gè)非線性系統(tǒng)輸入兩個(gè)或更多的頻率時(shí),非線性度會(huì)產(chǎn)生導(dǎo)致不同頻率之間的互調(diào)分量,這些互調(diào)分量就是我們所說(shuō)的交調(diào)失真。而三階交調(diào)失真則是
    的頭像 發(fā)表于 10-19 17:08 ?1199次閱讀