刮刮卡Python趣味脚本,做一个简单的抽奖刮刮卡
刮刮卡通常指卡上的一种覆盖数字和字母密码等的涂层 , 通常包括纸质和电子两种类型 , 刮刮卡在市场上有着比较广泛的应用 , 我们见到最多的应该是各类抽奖活动了 , 本文我们使用 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探究你喜爱的歌手的音乐风格?
- 吊带公主裙|通过 VSCode RTOS 插件使用 Python 为物联网系统编写程序
- 车驰夜幕|自学python编程有哪些教程和书籍?python之父:这些资源你必须有
- 趣味社会学|至少30亿动物惨死,世界自然组织曝光澳洲“罪行”
- 趣味社会学|柬埔寨政府:女性要穿覆盖大腿的衣服,女性穿超短裙或透明装将面临罚款
- 趣味社会学|女子被咬伤后讨要说法,却被卖家直接拉黑?,快递包裹飞出蝙蝠
- 趣味社会学|司机:都不许下车,男子在公交车上突然气绝身亡吓坏乘客
