Python趣味实例,实现一个简单的抽奖刮刮卡


Posted in Python onJuly 18, 2020

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者:黑白之道

刮刮卡通常指卡上的一种覆盖数字和字母密码等的涂层,通常包括纸质和电子两种类型,刮刮卡在市场上有着比较广泛的应用,我们见到最多的应该是各类抽奖活动了,本文我们使用 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趣味实例,实现一个简单的抽奖刮刮卡

是不是有内味了

总结

本文我们使用 Python 实现了一个简单的刮刮卡,有兴趣的话,可以对一些实现细节、效果等做进一步完善。

以上就是Python趣味实例,实现一个简单的抽奖刮刮卡的详细内容,更多关于Python 实现抽奖的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
进一步理解Python中的函数编程
Apr 13 Python
Python中的super()方法使用简介
Aug 14 Python
利用python将pdf输出为txt的实例讲解
Apr 23 Python
Python DataFrame 设置输出不显示index(索引)值的方法
Jun 07 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
Python实现使用request模块下载图片demo示例
May 24 Python
Python3并发写文件与Python对比
Nov 20 Python
Flask项目中实现短信验证码和邮箱验证码功能
Dec 05 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
Feb 18 Python
Java ExcutorService优雅关闭方式解析
May 30 Python
python 实现超级玛丽游戏
Nov 25 Python
Python OpenCV形态学运算示例详解
Apr 07 Python
用python给csv里的数据排序的具体代码
Jul 17 #Python
python如何删除列为空的行
Jul 17 #Python
Python操作Elasticsearch处理timeout超时
Jul 17 #Python
python设置表格边框的具体方法
Jul 17 #Python
六种酷炫Python运行进度条效果的实现代码
Jul 17 #Python
idea2020手动安装python插件的实现方法
Jul 17 #Python
Python调用百度OCR实现图片文字识别的示例代码
Jul 17 #Python
You might like
php使用websocket示例详解
2014/03/12 PHP
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
Sublime里直接运行PHP配置方法
2014/11/28 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
javascript字典探测用户名工具
2006/10/05 Javascript
javascript打开新窗口同时关闭旧窗口
2009/01/16 Javascript
web 页面分页打印的实现
2009/06/22 Javascript
javascript 定义初始化数组函数
2009/09/07 Javascript
Jquery实现三层遍历删除功能代码
2013/04/23 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
2013/09/26 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
jQuery实现不断闪烁文字的方法
2015/05/15 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
jquery easyui如何实现格式化列
2017/07/30 jQuery
RequireJS用法简单示例
2018/08/20 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
python实现定制交互式命令行的方法
2014/07/03 Python
python ddt实现数据驱动
2018/03/14 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
使用pycharm设置控制台不换行的操作方法
2019/01/19 Python
python修改字典键(key)的方法
2019/08/05 Python
基于pytorch的lstm参数使用详解
2020/01/14 Python
Python执行时间的几种计算方法
2020/07/31 Python
HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
2013/04/24 HTML / CSS
普罗米修斯教学反思
2014/02/06 职场文书
出国签证在职证明范本
2014/11/24 职场文书
务虚会发言材料
2014/12/25 职场文书
大学生个人学年总结
2015/02/15 职场文书
努力学习保证书
2015/02/26 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
2019暑期安全倡议书!
2019/06/27 职场文书
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android