python制作刮刮乐惊喜揭秘呀~趣味代码

Posted 搬砖python中~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python制作刮刮乐惊喜揭秘呀~趣味代码相关的知识,希望对你有一定的参考价值。

前言

大家早好、午好、晚好吖 ❤ ~

在今天,在我百般无聊的时候,突然发现一存货

于是,我把从犄角旮旯里翻出来的代码一运行

嘿,真不错~那在这里就分享给大家

素材

首先我们准备一些图片以及一首下载好的音乐(游戏音效)

效果展示

开局是这样一块灰色的

下面隐藏着什么呢~让我们动一动鼠标

是一张漂亮的动漫美女图~

是不是很像刮刮乐呀~不过刮刮乐刮开是“谢谢惠顾”以及“再来一瓶”

然我这个是不知道那个漂亮姐姐(妹妹)的图片呀~

代码展示

‘’‘导入模块’‘’

import os
import sys
import random
import pygame

‘’‘定义必要的常量’‘’

BGMPATH = 'music/bgm.mp3'
IMAGEDIR = 'pictures'
SUPPORTEXTS = ['jpg', 'png', 'bmp']
SCREENSIZE = (800, 600)
WHITE = (255, 255, 255, 27)
GRAY = (192, 192, 192)

‘’‘随机读取一张图片’‘’

def readImageRandomly():
	filenames = os.listdir(IMAGEDIR)
	filenames = [f for f in filenames if f.split('.')[-1] in SUPPORTEXTS]
	imgpath = os.path.join(IMAGEDIR, random.choice(filenames))
	return pygame.transform.scale(pygame.image.load(imgpath), SCREENSIZE)

‘’‘主程序’‘’

def main():
	pygame.init()
	pygame.mixer.init()
	pygame.mixer.music.load(BGMPATH)
	pygame.mixer.music.play(-1, 0.0)
	pygame.mouse.set_cursor(*pygame.cursors.diamond)
	screen = pygame.display.set_mode(SCREENSIZE)
	pygame.display.set_caption('刮刮乐——更多源码加🐧裙:261823976')
	surface = pygame.Surface(SCREENSIZE).convert_alpha()
	surface.fill(GRAY)
	image_used = readImageRandomly()
	while True:
		for event in pygame.event.get():
			if event.type == pygame.QUIT:
				pygame.quit()
				sys.exit(-1)
		mouse_event_flags = pygame.mouse.get_pressed()
		if mouse_event_flags[0]:
			pygame.draw.circle(surface, WHITE, pygame.mouse.get_pos(), 40)
		elif mouse_event_flags[-1]:
			surface.fill(GRAY)
			image_used = readImageRandomly()
		screen.blit(image_used, (0, 0))
		screen.blit(surface, (0, 0))
		pygame.display.update()

‘’‘run’‘’

if __name__ == '__main__':
	main()

好了,今天的分享就到这喽,完整源码及视频讲解下方名片自取即可~

当然了,你也可以保存足够多的图片,然后把这个程序打包~

朋友小孩一起玩哦~解密惊喜大礼包嘛

尾语 💝

我给大家准备了一些资料,包括:

2022最新Python视频教程、Python电子书10个G

(涵盖基础、爬虫、数据分析、web开发、机器学习、人工智能、面试题)、Python学习路线图等等

直接在文末名片自取即可!

有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

20行js代码制作网页刮刮乐

分享一段用canvas和JS制作刮刮乐的代码,JS部分去掉注释不到20行代码
效果如下

技术分享
盖伦.jpg
技术分享
刮刮乐.gif
HTML部分
<body>
        ![](img/gailun.jpg)
        <canvas id="canvas" width="400" height="300"></canvas>
    </body>

没什么要特别注意的
为了效果加了些CSS样式

CSS部分
<style type="text/css">
        *{
            margin: 0;
            padding: 0;
        }
            img{
                width: 400px;
                height: 300px;
                left: 200px;
                position: absolute;
                z-index: -1;
            }
            canvas{
                margin-left:200px;
            }
        </style>
注意

1.为了清除浏览器自带效果加了

*{
            margin: 0;
            padding: 0;
        }

2.img需要在灰布下面,加了z-index;
3.图片绝对定位


js部分
分析下逻辑

1.鼠标按下移动相应区域刮开
2.鼠标抬起改变鼠标位置不接着刮开

js代码
    <script type="text/javascript">
        var canvas = document.getElementById("canvas");
        var  context =  canvas.getContext(‘2d‘);
            //画蒙布
        context.beginPath();
        context.fillStyle= ‘grey‘
        context.fillRect(0,0,400,300);
        //鼠标按下开刮
        canvas.onmousedown=function(){
            canvas.onmousemove = function(){
                //获取鼠标坐标
                var x = event.clientX;
                var y  = event.clientY;
                //destination-out             显示原来的不在后来区域的部分
                context.globalCompositeOperation = "destination-out";
                context.beginPath();
                context.arc(x-200,y,30,0,Math.PI*2);
                context.fill();        
            }
        }
        //鼠标抬起不刮开
        canvas.onmouseup=function(){
            canvas.onmousemove = function(){    
            }
        }    
        </script>

需要注意的是

1.图片和画布左移了200px,所以圆的起点坐标相对于获取位置减了200px;
2.globalCompositeOperation是画布的一个功能作用是设置或返回如何将一个源(新的)图像绘制到目标(已有)的图像上,还有其余10种写法


学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群
343599877,我们一起学前端!

 











以上是关于python制作刮刮乐惊喜揭秘呀~趣味代码的主要内容,如果未能解决你的问题,请参考以下文章

Python实战项目做一个 刮刮乐 案例!一不小心竟然....着实惊艳到我了!!!

Python实战项目做一个 刮刮乐 案例,一不小心....着实惊艳到我了。

刮刮乐案例

刮刮乐案例

七夕节还不知道送啥,教你用MATLAB制作一款刮刮乐抽奖特效,让她的手气决定她的礼物

七夕节还不知道送啥,教你用MATLAB制作一款刮刮乐抽奖特效,让她的手气决定她的礼物