python实现刮刮乐(遮罩层也是图片)

python实现刮刮乐(遮罩层也是图片)

python实现刮刮乐效果,与普通刮刮乐有些不同,被刮掉的遮罩层是图片,当其被刮掉后,露下面的图片。在游戏循环中,监听鼠标移动事件,来模拟刮开效果。

效果图

 Pygame是一组用来开发游戏软件的 Python 程序模块,基于 SDL 库的基础上开发。允许你在 Python 程序中创建功能丰富的游戏和多媒体程序,Pygame 是一个高可移植性的模块可以支持多个操作系统。用它来开发小游戏非常适合。
请注意,在运行此代码之前,您需要确保已安装 Pygame 库。若没有安装,在控制台中使用以下命令进行安装:
pip install pygame
【关于安装安装第三方库的更多情况,可参见:https://blog.csdn.net/cnds123/article/details/104393385

源码如下:

import pygame

# 初始化 Pygame
pygame.init()

# 创建屏幕和加载图片
screen = pygame.display.set_mode((590, 710))  #屏幕大小根据实际修改
mask_image = pygame.image.load("mask_image.jpg")  #图片名称及路径根据实际情况修改
image = pygame.image.load("base_image.jpg") #图片名称及路径根据实际情况修改

# 将遮罩层图片缩放到与底部图片相同大小
mask_image = pygame.transform.scale(mask_image, image.get_size())

# 转换遮罩层和底部图片的表面类型为 alpha 模式
mask_surface = mask_image.convert_alpha()
image_surface = image.convert_alpha()

# 创建一个用于将重叠的表面合成的 Surface 对象
result_surface = pygame.Surface(image.get_size(), flags=pygame.SRCALPHA)

# 游戏主循环
def main_loop():
    while True:
        for event in pygame.event.get():
            if event.type == pygame.MOUSEMOTION:
                if pygame.mouse.get_pressed()[0]:
                    # 在遮罩层上绘制擦除线条
                    pygame.draw.circle(mask_surface, (0, 0, 0, 0), event.pos, 30)

            if event.type == pygame.QUIT:
                pygame.quit()
                return

        # 将底部图片和遮罩层图片绘制到 draw_surface 上
        draw_surface = pygame.Surface(image.get_size(), flags=pygame.SRCALPHA)
        draw_surface.blit(image_surface, (0, 0))
        draw_surface.blit(mask_surface, (0, 0))

        # 将重叠的表面合成
        result_surface.fill((255, 255, 255, 255))
        result_surface.blit(draw_surface, (0, 0), special_flags=pygame.BLEND_RGBA_MULT)

        # 在屏幕上绘制合成后的表面
        screen.blit(result_surface, (0, 0))

        pygame.display.flip()

if __name__ == "__main__":
    main_loop()

OK!

猜你喜欢

转载自blog.csdn.net/cnds123/article/details/131213316