前言
本文的文字及圖片來(lái)源于網(wǎng)絡(luò),僅供學(xué)習(xí)、交流使用,不具有任何商業(yè)用途,版權(quán)歸原作者所有,如有問(wèn)題請(qǐng)及時(shí)聯(lián)系我們以作處理。
作者:黑白之道
刮刮卡通常指卡上的一種覆蓋數(shù)字和字母密碼等的涂層,通常包括紙質(zhì)和電子兩種類型,刮刮卡在市場(chǎng)上有著比較廣泛的應(yīng)用,我們見到最多的應(yīng)該是各類抽獎(jiǎng)活動(dòng)了,本文我們使用 Python 來(lái)做一個(gè)簡(jiǎn)單的抽獎(jiǎng)刮刮卡。
實(shí)現(xiàn)
首先,我們弄幾張圖片做底板,如下所示:
從圖中我們可以看到底圖包括:一等獎(jiǎng)、二等獎(jiǎng)、謝謝惠顧三種,如果我們參與過(guò)刮刮卡抽獎(jiǎng)的話,會(huì)發(fā)現(xiàn)幾乎刮開都是謝謝惠顧之類的,也就是有個(gè)概率的問(wèn)題,這里我們也簡(jiǎn)單設(shè)置一下,一等獎(jiǎng)放一張、二等獎(jiǎng)放兩張、謝謝惠顧放三張,生成刮刮卡時(shí)隨機(jī)使用底圖就可以了。
實(shí)現(xiàn)刮刮卡,我們主要用到是 pygame 模塊,之前做小游戲時(shí)已經(jīng)用到過(guò)幾次了,大家應(yīng)該都比較熟悉,下面看一下具體實(shí)現(xiàn)。
我們先定義一下常量,如:路徑、圖片類型、顏色等,代碼實(shí)現(xiàn)如下:
1
2
3
4
5
6
|
path = 'prize' ptype = [ 'jpg' , 'png' , 'bmp' , 'JPG' , 'PNG' , 'BMP' ] # 窗口大小 screen_size = ( 600 , 400 ) white = ( 255 , 255 , 255 , 20 ) gray = ( 192 , 192 , 192 ) |
然后創(chuàng)建一個(gè)窗口,代碼實(shí)現(xiàn)如下:
1
2
3
4
|
pygame.init() pygame.mouse.set_cursor( * pygame.cursors.diamond) screen = pygame.display.set_mode(screen_size) pygame.display.set_caption( '刮一刮抽獎(jiǎng)' ) |
接著從所有底圖中隨機(jī)取出一張綁定到窗口,代碼實(shí)現(xiàn)如下:
1
2
3
4
5
|
filenames = os.listdir(path) filenames = [f for f in filenames if f.split( '.' )[ - 1 ] in ptype] imgpath = os.path.join(path, random.choice(filenames)) image_used = pygame.transform.scale(pygame.image.load(imgpath), screen_size) screen.blit(image_used, ( 0 , 0 )) |
再接著做一個(gè)灰色的圖層覆蓋到底圖上,代碼實(shí)現(xiàn)如下:
1
2
3
|
surface = pygame.Surface(screen_size).convert_alpha() surface.fill(gray) screen.blit(surface, ( 0 , 0 )) |
最后,我們定義一下鼠標(biāo)事件,在鼠標(biāo)移動(dòng)經(jīng)過(guò)的地方,將圖層置為透明,漏出底圖,代碼實(shí)現(xiàn)如下:
1
2
3
4
5
6
|
mouse_event = pygame.mouse.get_pressed() if mouse_event[ 0 ]: pygame.draw.circle(surface, white, pygame.mouse.get_pos(), 40 ) elif mouse_event[ - 1 ]: surface.fill(gray) image_used = pygame.transform.scale(pygame.image.load(imgpath), screen_size) |
一起來(lái)看一下實(shí)現(xiàn)效果:
是不是有內(nèi)味了
總結(jié)
本文我們使用 Python 實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的刮刮卡,有興趣的話,可以對(duì)一些實(shí)現(xiàn)細(xì)節(jié)、效果等做進(jìn)一步完善。
以上就是Python趣味實(shí)例,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的抽獎(jiǎng)刮刮卡的詳細(xì)內(nèi)容,更多關(guān)于Python 實(shí)現(xiàn)抽獎(jiǎng)的資料請(qǐng)關(guān)注服務(wù)器之家其它相關(guān)文章!
原文鏈接:https://www.cnblogs.com/zwhy8/archive/2020/07/18/13335683.html