Python趣味實例,實現一個簡單的抽獎刮刮卡
前言
本文的文字及圖片來源于網絡,僅供學習、交流使用,不具有任何商業(yè)用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。
作者:黑白之道
刮刮卡通常指卡上的一種覆蓋數字和字母密碼等的涂層,通常包括紙質和電子兩種類型,刮刮卡在市場上有著比較廣泛的應用,我們見到最多的應該是各類抽獎活動了,本文我們使用 Python 來做一個簡單的抽獎刮刮卡。
實現
首先,我們弄幾張圖片做底板,如下所示:

從圖中我們可以看到底圖包括:一等獎、二等獎、謝謝惠顧三種,如果我們參與過刮刮卡抽獎的話,會發(fā)現幾乎刮開都是謝謝惠顧之類的,也就是有個概率的問題,這里我們也簡單設置一下,一等獎放一張、二等獎放兩張、謝謝惠顧放三張,生成刮刮卡時隨機使用底圖就可以了。
實現刮刮卡,我們主要用到是 pygame 模塊,之前做小游戲時已經用到過幾次了,大家應該都比較熟悉,下面看一下具體實現。
我們先定義一下常量,如:路徑、圖片類型、顏色等,代碼實現如下:
path = 'prize' ptype = ['jpg', 'png', 'bmp', 'JPG', 'PNG', 'BMP'] # 窗口大小 screen_size = (600, 400) white = (255, 255, 255, 20) gray = (192, 192, 192)
然后創(chuàng)建一個窗口,代碼實現如下:
pygame.init()
pygame.mouse.set_cursor(*pygame.cursors.diamond)
screen = pygame.display.set_mode(screen_size)
pygame.display.set_caption('刮一刮抽獎')
接著從所有底圖中隨機取出一張綁定到窗口,代碼實現如下:
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))
再接著做一個灰色的圖層覆蓋到底圖上,代碼實現如下:
surface = pygame.Surface(screen_size).convert_alpha() surface.fill(gray) screen.blit(surface, (0, 0))
最后,我們定義一下鼠標事件,在鼠標移動經過的地方,將圖層置為透明,漏出底圖,代碼實現如下:
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)
一起來看一下實現效果:

是不是有內味了
總結
本文我們使用 Python 實現了一個簡單的刮刮卡,有興趣的話,可以對一些實現細節(jié)、效果等做進一步完善。
以上就是Python趣味實例,實現一個簡單的抽獎刮刮卡的詳細內容,更多關于Python 實現抽獎的資料請關注腳本之家其它相關文章!
相關文章
Python os.mkdir()與os.makedirs()的使用區(qū)別
這篇文章主要介紹了Python os.mkdir()與os.makedirs()的使用區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Python3.6 + TensorFlow 安裝配置圖文教程(Windows 64 bit)
這篇文章主要介紹了Python3.6 + TensorFlow 安裝配置的教程(Windows 64 bit),本文通過圖文并茂的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02
2020新版本pycharm+anaconda+opencv+pyqt環(huán)境配置學習筆記,親測可用
這篇文章主要介紹了2020新版本pycharm+anaconda+opencv+pyqt環(huán)境配置學習筆記,親測可用,特此分享到腳本之家平臺,需要的朋友可以參考下2020-03-03

