Python趣味实例,实现一个简单的抽奖刮刮卡
作者:吃着东西不想停 发布时间:2023-07-20 18:59:41
标签:Python,实现,抽奖,刮刮卡
前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者:黑白之道
刮刮卡通常指卡上的一种覆盖数字和字母密码等的涂层,通常包括纸质和电子两种类型,刮刮卡在市场上有着比较广泛的应用,我们见到最多的应该是各类抽奖活动了,本文我们使用 Python 来做一个简单的抽奖刮刮卡。
实现
首先,我们弄几张图片做底板,如下所示:
从图中我们可以看到底图包括:一等奖、二等奖、谢谢惠顾三种,如果我们参与过刮刮卡抽奖的话,会发现几乎刮开都是谢谢惠顾之类的,也就是有个概率的问题,这里我们也简单设置一下,一等奖放一张、二等奖放两张、谢谢惠顾放三张,生成刮刮卡时随机使用底图就可以了。
实现刮刮卡,我们主要用到是 pygame 模块,之前做小游戏时已经用到过几次了,大家应该都比较熟悉,下面看一下具体实现。
我们先定义一下常量,如:路径、图片类型、颜色等,代码实现如下:
path = 'prize'
ptype = ['jpg', 'png', 'bmp', 'JPG', 'PNG', 'BMP']
# 窗口大小
screen_size = (600, 400)
white = (255, 255, 255, 20)
gray = (192, 192, 192)
然后创建一个窗口,代码实现如下:
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 实现了一个简单的刮刮卡,有兴趣的话,可以对一些实现细节、效果等做进一步完善。
来源:https://www.cnblogs.com/zwhy8/archive/2020/07/18/13335683.html


猜你喜欢
- 1. 基础缩略图给a标签添加类class="thumbnail"如下:<div class="
- 本文实例讲述了Python批量重命名同一文件夹下文件的方法。分享给大家供大家参考。具体分析如下:朋友发了一个文件夹过来,里面的图片都以 .t
- 120726 11:57:22 [Warning] 'user' entry 'root@localhost.loc
- 使用smtplib模块发送邮件,供大家参考,具体内容如下1)使用smtplib模块发送简单邮件步骤:1.连接SMTP服务器,并使用用户名、密
- forms组件django框架提供了一个Form类,来进行web开发中的表单提交数据的处理工作。导入相关模块from django impo
- 引言在Scrapy中,在很多种情况下,需要一层层地进行爬取网页数据,就是基于url爬取网页,然后在从网页中提取url,继续爬取,循环往复。本
- python和C++一样,支持多继承。概念虽然容易,但是困难的工作是如果子类调用一个自身没有定义的属性,它是按照何种顺序去到父类寻找呢,尤其
- argparse 模块是Python内置的用于命令项选项与参数解析的模块,可以轻松编写友好的命令行接口,能够帮助程序员为模型定义参数。传入一
- 滤波算子简介ndimage中提供了卷积算法,并且建立在卷积之上,提供了三种边缘检测的滤波方案:prewitt, sobel以及laplace
- ASP编写完整的一个IP所在地搜索类的修正文稿修正了查询方法,查询的方法和追捕的一致;只是追捕会自动更正IP。还有个函数的书写错误,也已经修
- 以国内最流行ASP为例,我不知道有多少人会在写代码时想到“容错”这个概念,实际上当我遇到这种事时,也是不了了之。为什么呢,想想最初的意思是认
- 本文实例讲述了Python通用循环的构造方法。分享给大家供大家参考,具体如下:1.交互循环是无限循环的一种,允许用户通过交互的方式程序的特定
- 背景Python 作为一门成熟的编程语言,拥有无数优秀的第三方包以方便开发者能够快速地构建应用。一般来说,如果你开发了一个 Python 软
- 1. auth模块auth模块是对登录认证方法的一种封装,本身就是一个对象,可以获取用户的详细信息,有了auth模块可以验证登录信息是否存在
- 根据google最新的算法规则:用户行为模式的重视程度越来越高,这也就要求网页设计的时候应注意“合理的网页结构”,SEO业界也有个共识“网页
- 事情是这样的520晚上,正跟队友 啪啪啪 组团开黑突然,微信上前女友的头像跳动了起来快一年了,难道是想要复合?发来的竟是一个 "
- 函数getcache,会自动建立需要的缓存。 代码如下:Function getcache(funsname,isreset,is
- 本文实例讲述了Python实现简单查找最长子串功能。分享给大家供大家参考,具体如下:题目选自edX公开课 MITx: 6.00.1x Int
- 由于python内部的变量其实都是reference,而Tensorflow实现的时候也没有意义去判断输出是否是同一变量名,从而判定是否要新
- 对 current_datetime 的一次赋值操作:def current_datetime(request): now =