千家信息网

如何利用Matlab制作一款刮刮乐抽奖特效

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

    则若是我抽到的随机数为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安全错误 数据库的锁怎样保障安全 电脑安装数据库加载失败怎么办 服务器选型总体技术方案 网络安全实验室题脚本关 水声通信及网络技术 审计网络安全和信息化建设意见 北京三维土地gis系统软件开发 云采网络技术有限公司邮编 仙剑一是用什么软件开发的 数字地球软件开发技术 雅延互联网科技 抓好网络安全这个主线 组织开展网络安全周活动总结 成都网络安全顾问 互联网科技还有前景吗 光荣榜设计软件开发 软件开发团队硬件成本 中间件服务器作用 php开发文件服务器 深圳正能量网络技术有限公司 太原叠威网络技术有限公司 河南网络安全违法案例 网络技术实训论文 网络安全工作目标中打不垮 数据库教程视频下载百度云 csg连接不到任何服务器 龙之国物语服务器连接失败 辽宁数据中心服务器如何选择 档案馆网络安全规章制度 网络安全教育感想观后感 amd服务器显卡
    0