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缩进区别分析
Feb 15 Python
centos系统升级python 2.7.3
Jul 03 Python
Python如何读取MySQL数据库表数据
Mar 11 Python
python select.select模块通信全过程解析
Sep 20 Python
利用python操作SQLite数据库及文件操作详解
Sep 22 Python
Go/Python/Erlang编程语言对比分析及示例代码
Apr 23 Python
python+opencv+caffe+摄像头做目标检测的实例代码
Aug 03 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 Python
对python中的iter()函数与next()函数详解
Oct 18 Python
不到40行代码用Python实现一个简单的推荐系统
May 10 Python
python+selenium实现自动化百度搜索关键词
Jun 03 Python
python 实现"神经衰弱"翻牌游戏
Nov 09 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与浏览器缓存的分析
2013/06/03 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
IE6不能修改NAME问题的解决方法
2010/09/03 Javascript
jquery ajax属性async(同步异步)示例
2013/11/05 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
2014/07/28 Javascript
通过伪协议解决父页面与iframe页面通信的问题
2015/04/05 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
2016/11/25 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
利用python3随机生成中文字符的实现方法
2017/11/24 Python
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
python计算列表内各元素的个数实例
2018/06/29 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
详解Python 定时框架 Apscheduler原理及安装过程
2019/06/14 Python
matplotlib grid()设置网格线外观的实现
2021/02/22 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
Perfume’s Club英国官网:购买香水和护肤品
2019/11/02 全球购物
int和Integer有什么区别
2013/05/25 面试题
大学生护理专业自荐信
2013/10/03 职场文书
自荐信封面
2013/12/04 职场文书
幼儿园优秀班主任事迹材料
2014/05/14 职场文书
个人查摆问题及整改措施
2014/10/16 职场文书
党的群众路线教育实践活动个人整改措施
2014/10/27 职场文书
社区植树节活动总结
2015/02/06 职场文书
入党积极分子考察意见
2015/06/02 职场文书
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL