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 面向对象 成员的访问约束
Dec 23 Python
Python实现冒泡,插入,选择排序简单实例
Aug 18 Python
Python获取系统默认字符编码的方法
Jun 04 Python
Python应用03 使用PyQT制作视频播放器实例
Dec 07 Python
Python中.py文件打包成exe可执行文件详解
Mar 22 Python
python实现简易数码时钟
Feb 19 Python
Python中作用域的深入讲解
Dec 10 Python
对Python w和w+权限的区别详解
Jan 23 Python
Python面向对象思想与应用入门教程【类与对象】
Apr 12 Python
django 类视图的使用方法详解
Jul 24 Python
django基础学习之send_mail功能
Aug 07 Python
Python实现一个简单的毕业生信息管理系统的示例代码
Jun 08 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
php5新改动之短标记启用方法
2008/09/11 PHP
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
PHP extract 将数组拆分成多个变量的函数
2010/06/30 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
php阳历转农历优化版
2016/08/08 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
php fread函数使用方法总结
2019/05/28 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
javascript 设计模式之单体模式 面向对象学习基础
2010/04/18 Javascript
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
2013/01/24 Javascript
jquery事件与函数的使用介绍
2013/09/29 Javascript
不想让浏览器运行javascript脚本的方法
2015/11/20 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python 字典与字符串的互转实例
2017/01/13 Python
python实现内存监控系统
2021/03/07 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
浅谈Python3实现两个矩形的交并比(IoU)
2020/01/18 Python
详解pytorch tensor和ndarray转换相关总结
2020/09/03 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
2020/11/28 Python
实例教程 一款纯css3实现的数字统计游戏
2014/11/10 HTML / CSS
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
Weblogc domain问题
2014/01/27 面试题
如何通过 CSS 写出火焰效果
2021/03/24 HTML / CSS
医药营销个人求职信范文
2014/02/07 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
关于环保的演讲稿
2014/05/10 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
《正面管教》读后有感:和善而坚定的旅程
2019/12/19 职场文书
pytorch损失反向传播后梯度为none的问题
2021/05/12 Python