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中的choice()方法使用详解
May 15 Python
举例讲解Python中的身份运算符的使用方法
Oct 13 Python
Python编程使用NLTK进行自然语言处理详解
Nov 16 Python
Python常见内置高效率函数用法示例
Jul 31 Python
matplotlib.pyplot绘图显示控制方法
Jan 15 Python
python图像处理入门(一)
Apr 04 Python
使用Pytorch来拟合函数方式
Jan 14 Python
Python动态导入模块和反射机制详解
Feb 18 Python
python3中sorted函数里cmp参数改变详解
Mar 12 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
Sep 20 Python
基于python获取本地时间并转换时间戳和日期格式
Oct 27 Python
用python写PDF转换器的实现
Oct 29 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函数常用用法小结
2010/02/08 PHP
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
yii去掉必填项中星号的方法
2015/12/28 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
JQuery 选项卡效果(JS与HTML的分离)
2010/04/01 Javascript
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
微信小程序 基础组件与导航组件详细介绍
2017/02/21 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
node.js 发布订阅模式的实例
2017/09/10 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
vue倒计时刷新页面不会从头开始的解决方法
2020/03/03 Javascript
[12:36]《DOTA2》国服注册与激活指南全攻略
2013/04/28 DOTA
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
Python2.x版本中cmp()方法的使用教程
2015/05/14 Python
Django imgareaselect手动剪切头像实现方法
2015/05/26 Python
Python中作用域的深入讲解
2018/12/10 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
python datetime中strptime用法详解
2019/08/29 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
C++:局部变量能否和全局变量重名
2014/03/03 面试题
银行自荐信范文
2013/10/07 职场文书
生物化学研究助理员求职信
2013/10/09 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
新农村建设标语
2014/06/24 职场文书
小学感恩节活动策划方案
2014/10/06 职场文书
mysql如何查询连续记录
2022/05/11 MySQL