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中生成器和yield语句的用法详解
Apr 17 Python
深入解析Python中的WSGI接口
May 11 Python
Python连接SQLServer2000的方法详解
Apr 19 Python
python 读取视频,处理后,实时计算帧数fps的方法
Jul 10 Python
使用python将mysql数据库的数据转换为json数据的方法
Jul 01 Python
python程序中的线程操作 concurrent模块使用详解
Sep 23 Python
python二分法查找算法实现方法【递归与非递归】
Dec 06 Python
Pytorch之finetune使用详解
Jan 18 Python
PyCharm 专业版安装图文教程
Feb 20 Python
python框架Django实战商城项目之工程搭建过程图文详解
Mar 09 Python
python 简单的调用有道翻译
Nov 25 Python
python 实现汉诺塔游戏
Nov 28 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 $_SERVER当前完整url的写法
2009/11/12 PHP
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
2011/01/27 Javascript
js文本框输入内容智能提示效果
2015/12/02 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
2017/01/21 Javascript
JS实现的Unicode编码转换操作示例
2017/04/28 Javascript
Vue异步加载about组件
2017/10/31 Javascript
AngularJS 前台分页实现的示例代码
2018/06/07 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
[10:21]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster 选手采访
2021/03/11 DOTA
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
python实现单线程多任务非阻塞TCP服务端
2017/06/13 Python
Python实现的随机森林算法与简单总结
2018/01/30 Python
对python生成业务报表的实例详解
2019/02/03 Python
将pip源更换到国内镜像的详细步骤
2019/04/07 Python
Python 使用多属性来进行排序
2019/09/01 Python
安装2019Pycharm最新版本的教程详解
2019/10/22 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
详解CSS3:overflow属性
2020/11/17 HTML / CSS
几个Shell Script面试题
2012/08/31 面试题
Unix如何在一行中运行多个命令
2015/05/29 面试题
水务局局长岗位职责
2013/11/28 职场文书
网络维护中文求职信
2014/01/03 职场文书
给同学的道歉信
2014/01/16 职场文书
运动会解说词200字
2014/02/06 职场文书
《有趣的发现》教学反思
2014/04/15 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
2014最新毕业证代领委托书
2014/09/26 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
田径运动会广播稿
2015/08/19 职场文书
就业指导讲座心得体会
2016/01/15 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫
MySQL数据库事务的四大特性
2022/04/20 MySQL