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

这篇具有很好参考价值的文章主要介绍了python实现刮刮乐(遮罩层也是图片)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

效果图

python刮刮乐,Python学习,python,pygame

 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!文章来源地址https://www.toymoban.com/news/detail-734812.html

到了这里,关于python实现刮刮乐(遮罩层也是图片)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp 禁止遮罩层下的页面滚动

    使用 @touchmove.stop.prevent=\\\"toMoveHandle\\\" 事件修饰符 若需要禁止蒙版下的页面滚动,可使用 @touchmove.stop.prevent=\\\"moveHandle\\\",moveHandle 可以用来处理 touchmove 的事件,也可以是一个空函数。将这个方法直接丢到弹窗的最外层 view 就好了,虽然在编译器上的滚轮依旧可以滚动,但真机环

    2024年02月11日
    浏览(28)
  • 【uniapp】禁止遮罩层下的页面滚动解决办法

    不少朋友在日常工作中都会遇到需要自定义弹窗的时候,当开启弹窗后,却发现存在弹窗下的页面依旧可以被触发滚动的问题,以下是相关的解决方法。 根据是否打开的弹窗状态,对最外层 view 设置 height 和 overflow: 这个方法通过对页面设置高度来限制底层页面滚动的问题,

    2024年02月07日
    浏览(33)
  • 微信小程序 - 解决弹框遮罩层的滚动穿透问题

    在小程序页面里有自定义弹窗时候,发现弹窗外滚动的时候,底部背景页面也会跟随滚动。面对这个bug,我们可以用下面几种方法实现: 可以实现弹框背景不滚动,但是也会导致弹框自身无法滚动。 如果你的 弹窗本身是不需要滚动的 ,用这个方法是极佳的。 ps:开发工具测

    2024年02月17日
    浏览(41)
  • 微信程序 自定义遮罩层遮不住底部tabbar解决

    一、先上效果 二 方法 1、自定义底部tabbar 实现: https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html 官网去抄 简单写下:在代码根目录下添加入口文件 除了js 文件的list 需要调整 其他原封不动 代码: js部分 json wxml wxss 2、 list 的中的页面 都需要在 onShow 中加入

    2024年02月12日
    浏览(35)
  • el-dialog嵌套使用,只显示遮罩层的问题

    我是不建议嵌套使用的,平级也能调用,层级是按点击顺序的 这两个方法还是有用的,比如跳转其他页面保留el-dialog显示状态,可以使用 如果有用,请给我点赞收藏,我会很开心,谢谢

    2024年01月19日
    浏览(44)
  • 【bug】vuxUI组件popup弹出框在IOS中遮罩层会遮住页面

    可以增加自定义方法v-transfer-dom transfer-dom’.js // Thanks to: https://github.com/calebroseland/vue-dom-portal

    2024年04月28日
    浏览(62)
  • elemtui 提示消息element-ui message被遮罩层覆盖解决方法

    elemtui 提示消息element-ui message被遮罩层覆盖解决方法   问题原因:  最外层的遮罩z-index设置太大  默认 的el-dialog的z-index是2000起的, 而我们的 message 低于2000的,因此将 el-dialog 的z-index设置低于message就 可以 了  

    2024年02月07日
    浏览(54)
  • layui弹框(上)- 基础参数:弹出层、多按钮、对齐方式、遮罩层(透明度)、定时关闭...的集合

    一、使用layui的第一步:引用layui的js和css文件 link rel=\\\"stylesheet\\\" href=\\\"layui/css/layui.css\\\" / script src=\\\"layui/layui.js\\\"/script 您也可以引用网络资源 script src=\\\"layui.js:https://heerey525.github.io/layui-v2.4.3/layui/layui.js\\\"/script link rel=\\\"stylesheet\\\" href=\\\"https://heerey525.github.io/layui-v2.4.3/layui/css/layui.css\\\" 二、引

    2024年02月02日
    浏览(45)
  • element-ui框架的el-dialog弹出框被遮罩层挡住

    解决办法 在el-dialog标签里添加 :modal-append-to-body=‘false’ 问题分析  先来看看element-ui官网提供的属性说明文档 文档解释: 翻译成大白话就是,若el-dialog弹出框设置了modal-append-to-body=\\\'true\\\'(默认)属性,它的遮罩层就会被插入到body标签下(即与组件所在的最外层div同一层级),

    2024年02月16日
    浏览(31)
  • 【vue】Element UIel-dialog 自定义样式 + 去除弹框遮罩层底层可点击

    点开弹框,右侧键盘按钮还需要可以点击 去除 遮罩层+底层内容 可编辑点击 :modal=“false” +css样式 或 如果弹框中有 append-to-body 属性的 一定要去掉 否则遮罩层去掉了,但还是不能点击噢~!!! 去除el-dialog自身弹窗样式 取消el-dialog自带close按钮+点击遮罩关闭弹窗 :show-close

    2024年02月15日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包