如何利用Matlab制作一款刮刮乐抽奖特效
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家分享的是有关如何利用Matlab制作一款刮刮乐抽奖特效的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.效果展示程序运行效果如下:如图所示,按住鼠标不松开并滑
千家信息网最后更新 2026年11月01日如何利用Matlab制作一款刮刮乐抽奖特效
这篇文章给大家分享的是有关如何利用Matlab制作一款刮刮乐抽奖特效的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
1.效果展示
程序运行效果如下:
如图所示,按住鼠标不松开并滑动鼠标,即可刮开图层:

2.程序原理说明
2.1 奖项设置
奖项设置写在一个cell元胞数组中,第一列为文本信息,第二列为抽到的概率:
strSet={'520元红包一个',15/100; '1314元红包一个',5/100; '黑丝水手服',20/100; '黑丝女仆装',20/100; '抱抱×50次',20/100; '亲亲×50次',20/100;}; probVal=cell2mat(strSet(:,2)); %提取第二列概率信息2.2 随机抽取
我们首先将离散型概率密度函数转换为概率分布函数:
% 将概率密度函数转换为概率分布函数for i=2:length(probVal) probVal(i)=probVal(i)+probVal(i-1);end
例如
概率密度和概率分布如下:
| 概率密度 | 概率分布 |
|---|---|
| 0.15 | 0.15 |
| 0.05 | 0.2 |
| 0.2 | 0.4 |
| 0.2 | 0.6 |
| 0.2 | 0.8 |
| 0.2 | 1 |
则若是我抽到的随机数为0.7,0.7在概率分布第四个数和第五个数之间,我们就认为我们抽到的是第五个选项。该部分代码如下:
randNum=rand();numRange=probVal>randNum;strPos=find(numRange,1);
确定了是第几个奖项就可以显示字符串了,用text函数在坐标区域进行显示:
text(300,100,strSet{strPos,1},... 'HorizontalAlignment','center','FontSize',60)2.3绘制图层
使用image绘制一张颜色为灰色每个位置透明度都为1的图片:
coverageMat_C=ones(200,600,3).*0.62;coverageMat_A=ones(200,600);coverageHdl=image([0 600],[0 200],coverageMat_C,... 'AlphaData',coverageMat_A);
2.4 滑动鼠标刮奖
判断鼠标是否被点击
假设我们当前figure名为fig,以下设置是在fig的基础上设置,首先我们要判定鼠标是否被按住。因此我们设置一个名为isClicking,并设置鼠标按下和鼠标松开两个回调函数,当鼠标点击时将isClicking设置为true,当鼠标松开时isClicking设置为false。
isClicking=false;set(fig,'WindowButtonDownFcn',@bt_down);function bt_down(~,~),isClicking=true;endset(fig,'WindowButtonUpFcn',@bt_up);function bt_up(~,~),isClicking=false;end
鼠标滑动刮奖
该部分代码:
[xMesh,yMesh]=meshgrid(1:600,1:200);set(fig,'WindowButtonMotionFcn',@bt_move);function bt_move(~,~) if isClicking mousePos=fig.CurrentPoint; boolPos=sqrt((xMesh-mousePos(1)).^2+(yMesh-mousePos(2)).^2)<=15; coverageMat_A(boolPos)=0; set(coverageHdl,'AlphaData',coverageMat_A) endend
3.完整代码
function scratchCardstrSet={'520元红包一个',15/100; '1314元红包一个',5/100; '黑丝水手服',20/100; '黑丝女仆装',20/100; '抱抱×50次',20/100; '亲亲×50次',20/100;}; probVal=cell2mat(strSet(:,2));% 将概率密度函数转换为概率分布函数for i=2:length(probVal) probVal(i)=probVal(i)+probVal(i-1);endfig=figure('units','pixels');fig.Position=[300 80 600 200];fig.NumberTitle='off';fig.MenuBar='none';fig.Resize='off';fig.Name='刮刮乐';ax=axes(fig);ax.Position=[0 0 1 1];ax.XTick=[];ax.YTick=[];ax.ZTick=[];ax.XLim=[0 600];ax.YLim=[0 200];hold(ax,'on')randNum=rand();numRange=probVal>randNum;strPos=find(numRange,1);text(300,100,strSet{strPos,1},... 'HorizontalAlignment','center','FontSize',60)coverageMat_C=ones(200,600,3).*0.62;coverageMat_A=ones(200,600);[xMesh,yMesh]=meshgrid(1:600,1:200);coverageHdl=image([0 600],[0 200],coverageMat_C,... 'AlphaData',coverageMat_A);isClicking=false;set(fig,'WindowButtonDownFcn',@bt_down);function bt_down(~,~),isClicking=true;endset(fig,'WindowButtonUpFcn',@bt_up);function bt_up(~,~),isClicking=false;end set(fig,'WindowButtonMotionFcn',@bt_move);function bt_move(~,~) if isClicking mousePos=fig.CurrentPoint; boolPos=sqrt((xMesh-mousePos(1)).^2+(yMesh-mousePos(2)).^2)<=15; coverageMat_A(boolPos)=0; set(coverageHdl,'AlphaData',coverageMat_A) endendend感谢各位的阅读!关于"如何利用Matlab制作一款刮刮乐抽奖特效"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
概率
鼠标
函数
密度
红包
黑丝
代码
奖项
特效
制作
个数
信息
内容
奖项设置
女仆
效果
更多
水手
程序
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网属科技
互联网科技战争
以房互联网科技
互联网科技的英文
互联网科技美容
互联网科技公司介绍
科技伦理 互联网公司
上海电发互联网科技有限公司
青岛中康互联网医疗科技有限公司
互联网还是高科技吗
玉溪互联网科技怎么选
合肥互联网科技公司公章图片
互联网企业科技类企业如何做账
黑云互联网科技有限公司
广州百诚互联网科技有限公司官网
科技互联网行业投资研究
互联网科技机房
艺电能源互联网科技有限公司招聘
宁波允成互联网科技有限公司
互联网企业和网络科技有限公司
互联网科技图片
广东猪兼强互联网科技有限公司
互联网和科技创新
互联网最新的科技有限公司
互联网科技金融公司
未来的互联网科技
恒银科技与互联网金融
互联网科技与大数据专业
互联网科技公司营业执照怎么办理
互联网风格科技公司名称