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 socket网络编程步骤详解(socket套接字使用)
Dec 06 Python
python使用新浪微博api上传图片到微博示例
Jan 10 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
May 27 Python
Python wxPython库使用wx.ListBox创建列表框示例
Sep 03 Python
Python中Unittest框架的具体使用
Aug 27 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
wxPython实现整点报时
Nov 18 Python
基于Python 中函数的 收集参数 机制
Dec 21 Python
Python模块的制作方法实例分析
Dec 21 Python
python3.8与pyinstaller冲突问题的快速解决方法
Jan 16 Python
pycharm 更改创建文件默认路径的操作
Feb 15 Python
Django用户认证系统如何实现自定义
Nov 12 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 和 XML: 使用expat函数(三)
2006/10/09 PHP
谷歌音乐搜索栏的提示功能php修正代码
2011/05/09 PHP
学习PHP session的传递方式
2016/06/15 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
破除网页鼠标右键被禁用的绝招大全
2006/12/27 Javascript
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
JS 实现完美include载入实现代码
2010/08/05 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
jQuery多级弹出菜单插件ZoneMenu
2014/12/18 Javascript
JavaScript知识点整理
2015/12/09 Javascript
4种JavaScript实现简单tab选项卡切换的方法
2016/01/06 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
从零学Python之入门(二)基本数据类型
2014/05/25 Python
小小聊天室Python代码实现
2016/08/17 Python
python在每个字符后添加空格的实例
2018/05/07 Python
pycharm安装和首次使用教程
2018/08/27 Python
使用TensorFlow实现二分类的方法示例
2019/02/05 Python
Python创建字典的八种方式
2019/02/27 Python
Pycharm IDE的安装和使用教程详解
2020/04/30 Python
解决python运行启动报错问题
2020/06/01 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
初始化了一个没有run()方法的线程类,是否会出错?
2014/03/27 面试题
房地产项目策划书
2014/02/05 职场文书
公务员转正考察材料
2014/02/07 职场文书
英语辞职信怎么写
2015/02/28 职场文书
校运会广播稿
2015/08/19 职场文书
如何给HttpServletRequest增加消息头
2021/06/30 Java/Android