Python黑科技系列06 - 項目實戰(zhàn)-刮刮卡小游戲

序言

最快的成功方法就是, 保持對一件事情專注, 不停地重復(fù), 不停地深鉆, 只要看透時間的復(fù)利效應(yīng), 每一個人都可以是一個小領(lǐng)域的佼佼者, 怕的就是你在各個領(lǐng)域之間徘徊游蕩。” 想成功,就要舍去某些東西,

開始之前,捋一下思路:

1、需要一個方形界面,這里選用pygame模塊,搭建游戲窗口
2、窗口需要設(shè)置一張背景圖片作為展示,可以添加個BGM音樂。
3、可以設(shè)置一個灰色的背景圖層把圖片覆蓋起來,起到一個可以刮的效果。

image.png

準備素材:

1、安裝模塊;指令:pip install pygame
2、一首mp3歌曲
3、1張或者多張圖片

第一步:搭建游戲窗口

import sys
import pygame

# 初始化 預(yù)加載
pygame.init()
# 窗口的大小
pygame.display.set_mode((800,500))

while True:
    # 獲得 當(dāng)前的事件  列表
    events = pygame.event.get()
    #
    for events in events:
       if events.type == pygame.QUIT:
           # 退出當(dāng)前的窗口界面
           pygame.quit()
           sys.exit()
    pygame.display.update()
image.png

第二步:設(shè)置游戲背景音樂

#  加載音樂
pygame.mixer.music.load(r'500miles.mp3')
# 播放音樂
pygame.mixer.music.play()
image.png

第三步:隨機窗口背景圖片展示

file_name = os.listdir('pic')

print(file_name)
print(random.choice(file_name)) 
# 拼接
image_path = os.path.join('pic',random.choice(file_name))
image_used = pygame.transform.scale(pygame.image.load(image_path), (800,500))

image_used = screen.blit(image_used, (0, 0))
image.png

image.png

第四步:添加背景圖層

從上往下堆代碼的話,總感覺不太好 ,接下來我會把前面的代碼重新 通過函數(shù)封裝一下。作為一名程序員代碼逼格得上去不是。

import os
import sys
import random
import pygame


# 定義常量
BGMPATH = 'music/500miles.mp3'
IMAGEDIR = 'pictures'
SUPPORTEXTS = ['jpg', 'png']
SCREENSIZE = (800, 600)
WHITE = (255, 255, 255, 27)
GRAY = (192, 192, 192)

# 隨機讀取一張圖片
def readImage():
    file_names = os.listdir(IMAGEDIR)
    file_names = [f for f in file_names if f.split('.')[-1] in SUPPORTEXTS]
    img_path = os.path.join(IMAGEDIR, random.choice(file_names))
    return pygame.transform.scale(pygame.image.load(img_path), SCREENSIZE)


def main():
    pygame.init()
    pygame.mixer.init()
    pygame.mixer.music.load(BGMPATH)
    pygame.mixer.music.play(-1, 0.0)
    pygame.mouse.set_cursor(*pygame.cursors.diamond)
    screen = pygame.display.set_mode(SCREENSIZE)
    pygame.display.set_caption('普門教育Tony老師-定制-紙質(zhì)版-刮刮卡游戲')
    surface = pygame.Surface(SCREENSIZE).convert_alpha()
    surface.fill(GRAY)
    image_used = readImage()
    while True:
        #  這里要 添加獲得 當(dāng)前的事件  列表
        mouse_event_flags = pygame.mouse.get_pressed()
        if mouse_event_flags[0]:
            pygame.draw.circle(surface, WHITE, pygame.mouse.get_pos(), 40)
        elif mouse_event_flags[-1]:
            surface.fill(GRAY)
            image_used = readImage()
        screen.blit(image_used, (0, 0))
        screen.blit(surface, (0, 0))
        pygame.display.update()


if __name__ == '__main__':
    main()

這里的圖片我設(shè)置了8張,可隨機更換。


image.png

第五步:效果展示

image.png
image.png

在這個浮躁的時代;竟然還有人能堅持篇篇原創(chuàng);

如果本文對你學(xué)習(xí)有所幫助-可以點贊??+ 關(guān)注!將持續(xù)更新更多新的文章。

支持原創(chuàng)。感謝!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容