不到 50 行 Python 代码,做个刮刮卡

来源:Python 技术「ID: pythonall」

刮刮卡通常指卡上的一种覆盖数字和字母密码等的涂层,通常包括纸质和电子两种类型,刮刮卡在市场上有着比较广泛的应用,我们见到最多的应该是各类抽奖活动了,本文我们使用 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 实现了一个简单的刮刮卡,有兴趣的话,可以对一些实现细节、效果等做进一步完善。

(0)

相关推荐

  • 用pygame开发自己的游戏-3.用键盘控制方块的移动

    一.引言 前面文章中我们学会让方块随着时间运动,本文我们实现用键盘控制方块的移动. 二.pygame事件概念 事件在计算机术语常用来指系统中发生的重要事情,比如用户输入.定时器到期等.pygame提供 ...

  • Python游戏编程(Pygame)

    安装Pygame pip install pygame 1 C:\Users> pip install pygame Collecting pygame Downloading https:// ...

  • 用pygame开发自己的游戏-1. 基础与入门

    一.前言 pygame是一个用Python写的SDL库.SDL是一个能访问计算机多媒体硬件组件(包括声卡,视频卡,输入组件等)的跨平台库.本系列主要通过pygame做小游戏来学习编程.对于学过基本语法 ...

  • 底图代码

    :<TABLE border=3 cellSpacing=3 borderColor=#00FF00 cellPadding=5 width="100%" backgroun ...

  • 【青少年编程】我要背单词

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载&quo ...

  • 有人说Python是青铜?我用50行Python代码绘制3D机场分布图

    原创 菜鸟哥 菜鸟学Python 2020-03-23 绘制一款的3D图形,不仅可以直观的展示数据分析的结果,也更方便数据化运营,同时也让工作成果更容易被大众理解.本文就基于python绘制一款基础的 ...

  • 30行Python代码实现蚂蚁森林自动偷能量(附源码)

    虽然我支付宝加了好多好友,平时有很多能量可以偷,但由于太懒,至今一棵树都没种成,所以心心念念把偷能量这事自动化.之前通过用代码模拟手机点按的方式,实现了 朋友圈自动点赞,但当时蚂蚁森林的操作流程要比朋 ...

  • 什么,3行Python代码就能获取海量数据?

    Python爬虫与数据挖掘 1周前 以下文章来源于法纳斯特 ,作者小F 本文转载自公众号[法纳斯特],详情可以点击上方卡片,关注该公众号,获取更多好文推荐. 一谈起数据分析,首先想到的就是数据,没有数 ...

  • 6行python代码的爱心线

    前些日子在做绩效体系的时候,遇到了一件囧事,居然忘记怎样在Excel上拟合正态分布了,尽管在第二天重新拾起了Excel中那几个常见的函数和图像的做法,还是十分的惭愧.实际上,当时有效偏颇了,忽略了问题 ...

  • 10行Python代码的词云

    什么是词云呢? 词云又叫文字云,是对文本数据中出现频率较高的"关键词"在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思. 现在 ...

  • 再见PDF提取收费!我用100行Python代码搞定!

    第471篇原创干货,第一时间送达 大家在日常的工作和学习过程中,都少不了与PDF文件打交道,很多的小伙伴都面临着将PDF文件中的文字.图片和表格数据提取出来的问题.能够对PDF文件中的文字.表格等数据 ...

  • 不到70行Python代码,轻松玩转RFM用户分析模型(附案例数据和代码)

    本文从RFM模型概念入手,结合实际案例,详解Python实现模型的每一步操作,并提供案例同款源数据,以供同学们知行合一. 注:想直接下载代码和数据的同学可以空降文末 看这篇文章前源数据长这样: 学完后 ...

  • 女友半夜加班发自拍,IT男友用30行python代码发现惊天秘密

    点击上方"机器学习爱好者社区" 选择"星标"公众号,重磅干货,第一时间送达 这是一个悲伤的故事 昨天,我司的python开发小哥刚准备下班陪女友共进晚餐,满心期 ...

  • 用几行python代码偷偷复制U盘文件

    https://www.cnblogs.com/dawning666/articles/9433907.html 前言 上大学的时候有老师不给上课的PPT,就总想有个程序能偷偷复制老师的U盘....一 ...