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

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

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

用python做一個三階拼圖

電子工程師 ? 來源:lq ? 2019-02-16 10:37 ? 次閱讀

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

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

程序介紹

先上圖讓大家感受一下

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

具體實現(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è)置游戲的點擊事件,簡單的說就是鼠標(biāo)點擊圖片進(jìn)行移動的邏輯,主要的邏輯代碼就是做了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:#延時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),計算鼠標(biāo)點擊的圖塊,判斷操作是否成功。

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

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

寫在最后

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

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

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68628
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84695

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    設(shè)計三階帶通濾波器

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

    請問這兩三階濾波π型如何計算?

    請問這兩三階濾波電路如何推導(dǎo)?
    發(fā)表于 01-17 18:29

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

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

    請問你們是怎么設(shè)計三階LPF的?有這方面的資料嗎?

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

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

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

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

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

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

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

    三階不對稱濾波器電路

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

    三階繼電器通斷與電壓量測

    繼電器的測量,三階的,應(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ì)案例說明

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

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

    一階板,次壓合即成,可以想像成最普通的板二板,兩次壓合,以盲埋孔的八層板為例,先做2-7層的板,壓好,這時候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>依靠什么來區(qū)分

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

    對于三階互調(diào)截點的公式,因為平時的比較多,所以比較熟悉。
    的頭像 發(fā)表于 02-22 16:42 ?3527次閱讀

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

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