Python黑科技系列06 - 项目实战-刮刮卡小游戏

2022-06-23  本文已影响0人  Tony_Pm

序言

最快的成功方法就是, 保持对一件事情专注, 不停地重复, 不停地深钻, 只要看透时间的复利效应, 每一个人都可以是一个小领域的佼佼者, 怕的就是你在各个领域之间徘徊游荡。” 想成功,就要舍去某些东西,

开始之前,捋一下思路:

1、需要一个方形界面,这里选用pygame模块,搭建游戏窗口
2、窗口需要设置一张背景图片作为展示,可以添加个BGM音乐。
3、可以设置一个灰色的背景图层把图片覆盖起来,起到一个可以刮的效果。

image.png

准备素材:

1、安装模块;指令:pip install pygame
2、一首mp3歌曲
3、1张或者多张图片

第一步:搭建游戏窗口

import sys
import pygame

# 初始化 预加载
pygame.init()
# 窗口的大小
pygame.display.set_mode((800,500))

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

第二步:设置游戏背景音乐

#  加载音乐
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

第四步:添加背景图层

从上往下堆代码的话,总感觉不太好 ,接下来我会把前面的代码重新 通过函数封装一下。作为一名程序员代码逼格得上去不是。

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老师-定制-纸质版-刮刮卡游戏')
    surface = pygame.Surface(SCREENSIZE).convert_alpha()
    surface.fill(GRAY)
    image_used = readImage()
    while True:
        #  这里要 添加获得 当前的事件  列表
        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()

这里的图片我设置了8张,可随机更换。


image.png

第五步:效果展示

image.png image.png

在这个浮躁的时代;竟然还有人能坚持篇篇原创;

如果本文对你学习有所帮助-可以点赞👍+ 关注!将持续更新更多新的文章。

支持原创。感谢!

上一篇 下一篇

猜你喜欢

热点阅读