如何利用Matlab制作一款刮刮乐抽奖特效(matlab,开发技术)

时间:2024-05-03 17:02:54 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    1.效果展示

    程序运行效果如下:

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

    如图所示,按住鼠标不松开并滑动鼠标,即可刮开图层:

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

    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 随机抽取

    我们首先将离散型概率密度函数转换为概率分布函数:

    %将概率密度函数转换为概率分布函数fori=2:length(probVal)probVal(i)=probVal(i)+probVal(i-1);end

    例如

    概率密度和概率分布如下:

    概率密度概率分布0.150.150.050.20.20.40.20.60.20.80.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([0600],[0200],coverageMat_C,...'AlphaData',coverageMat_A);

    2.4 滑动鼠标刮奖

    判断鼠标是否被点击

    假设我们当前figure名为fig,以下设置是在fig的基础上设置,首先我们要判定鼠标是否被按住。因此我们设置一个名为isClicking,并设置鼠标按下和鼠标松开两个回调函数,当鼠标点击时将isClicking设置为true,当鼠标松开时isClicking设置为false。

    isClicking=false;set(fig,'WindowButtonDownFcn',@bt_down);functionbt_down(~,~),isClicking=true;endset(fig,'WindowButtonUpFcn',@bt_up);functionbt_up(~,~),isClicking=false;end

    鼠标滑动刮奖

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

    该部分代码:

    [xMesh,yMesh]=meshgrid(1:600,1:200);set(fig,'WindowButtonMotionFcn',@bt_move);functionbt_move(~,~)ifisClickingmousePos=fig.CurrentPoint;boolPos=sqrt((xMesh-mousePos(1)).^2+(yMesh-mousePos(2)).^2)<=15;coverageMat_A(boolPos)=0;set(coverageHdl,'AlphaData',coverageMat_A)endend

    3.完整代码

    functionscratchCardstrSet={'520元红包一个',15/100;'1314元红包一个',5/100;'黑丝水手服',20/100;'黑丝女仆装',20/100;'抱抱×50次',20/100;'亲亲×50次',20/100;};probVal=cell2mat(strSet(:,2));%将概率密度函数转换为概率分布函数fori=2:length(probVal)probVal(i)=probVal(i)+probVal(i-1);endfig=figure('units','pixels');fig.Position=[30080600200];fig.NumberTitle='off';fig.MenuBar='none';fig.Resize='off';fig.Name='刮刮乐';ax=axes(fig);ax.Position=[0011];ax.XTick=[];ax.YTick=[];ax.ZTick=[];ax.XLim=[0600];ax.YLim=[0200];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([0600],[0200],coverageMat_C,...'AlphaData',coverageMat_A);isClicking=false;set(fig,'WindowButtonDownFcn',@bt_down);functionbt_down(~,~),isClicking=true;endset(fig,'WindowButtonUpFcn',@bt_up);functionbt_up(~,~),isClicking=false;endset(fig,'WindowButtonMotionFcn',@bt_move);functionbt_move(~,~)ifisClickingmousePos=fig.CurrentPoint;boolPos=sqrt((xMesh-mousePos(1)).^2+(yMesh-mousePos(2)).^2)<=15;coverageMat_A(boolPos)=0;set(coverageHdl,'AlphaData',coverageMat_A)endendend
     </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
    本文:如何利用Matlab制作一款刮刮乐抽奖特效的详细内容,希望对您有所帮助,信息来源于网络。
    上一篇:Python的os包与os.path模块怎么用下一篇:

    17 人围观 / 0 条评论 ↓快速评论↓

    (必须)

    (必须,保密)

    阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18