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 sqlobject(mysql)中文乱码解决方法
Nov 14 Python
python实现的阳历转阴历(农历)算法
Apr 25 Python
Python工程师面试题 与Python基础语法相关
Jan 14 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
Jul 24 Python
Python简单实现自动删除目录下空文件夹的方法
Aug 29 Python
详细解读tornado协程(coroutine)原理
Jan 15 Python
flask中主动抛出异常及统一异常处理代码示例
Jan 18 Python
Python使用zip合并相邻列表项的方法示例
Mar 17 Python
使用 Python 实现简单的 switch/case 语句的方法
Sep 17 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
Python Http请求json解析库用法解析
Nov 28 Python
详解用Python把PDF转为Word方法总结
Apr 27 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
Adodb的十个实例(清晰版)
2006/12/31 PHP
PHP5中新增stdClass 内部保留类
2011/06/13 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
PHP内存缓存Memcached类实例
2014/12/08 PHP
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
Javascript this 的一些学习总结
2012/08/02 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
使用iojs的jsdom库实现同步系统时间
2015/04/20 Javascript
Javascript闭包(Closure)详解
2015/05/05 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
JavaScript数据结构与算法之链表
2016/01/29 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
python多线程抓取天涯帖子内容示例
2014/04/03 Python
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
python中csv文件的若干读写方法小结
2018/07/04 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
波兰最早的运动鞋精品店之一:Street Supply
2019/08/29 全球购物
国庆节文艺活动方案
2014/02/03 职场文书
公司总经理岗位职责
2014/03/15 职场文书
学生安全责任书模板
2014/07/25 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
JavaScript原型链详解
2021/11/07 Javascript