欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用Matlab制作一款刮刮樂抽獎特效

 更新時間:2022年03月01日 10:34:28   作者:slandarer  
七夕節(jié)還不知道送啥,教你用MATLAB制作一款刮刮樂抽獎特效,讓她的手氣決定她的禮物。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

1.效果展示

程序運(yùn)行效果如下:

如圖所示,按住鼠標(biāo)不松開并滑動鼠標(biāo),即可刮開圖層:

2.程序原理說明

2.1 獎項(xiàng)設(shè)置

獎項(xiàng)設(shè)置寫在一個cell元胞數(shù)組中,第一列為文本信息,第二列為抽到的概率:

strSet={'520元紅包一個',15/100;
        '1314元紅包一個',5/100;
        '黑絲水手服',20/100;
        '黑絲女仆裝',20/100;
        '抱抱×50次',20/100;
        '親親×50次',20/100;}; 
probVal=cell2mat(strSet(:,2)); %提取第二列概率信息

2.2 隨機(jī)抽取

我們首先將離散型概率密度函數(shù)轉(zhuǎn)換為概率分布函數(shù):

% 將概率密度函數(shù)轉(zhuǎn)換為概率分布函數(shù)
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

則若是我抽到的隨機(jī)數(shù)為0.7,0.7在概率分布第四個數(shù)和第五個數(shù)之間,我們就認(rèn)為我們抽到的是第五個選項(xiàng)。該部分代碼如下:

randNum=rand();
numRange=probVal>randNum;
strPos=find(numRange,1);

確定了是第幾個獎項(xiàng)就可以顯示字符串了,用text函數(shù)在坐標(biāo)區(qū)域進(jìn)行顯示:

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 滑動鼠標(biāo)刮獎

判斷鼠標(biāo)是否被點(diǎn)擊

假設(shè)我們當(dāng)前figure名為fig,以下設(shè)置是在fig的基礎(chǔ)上設(shè)置,首先我們要判定鼠標(biāo)是否被按住。因此我們設(shè)置一個名為isClicking,并設(shè)置鼠標(biāo)按下和鼠標(biāo)松開兩個回調(diào)函數(shù),當(dāng)鼠標(biāo)點(diǎn)擊時將isClicking設(shè)置為true,當(dāng)鼠標(biāo)松開時isClicking設(shè)置為false。

isClicking=false;
set(fig,'WindowButtonDownFcn',@bt_down);
function bt_down(~,~),isClicking=true;end

set(fig,'WindowButtonUpFcn',@bt_up);
function bt_up(~,~),isClicking=false;end

鼠標(biāo)滑動刮獎

該部分代碼:

[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)
    end
end

3.完整代碼

function scratchCard
strSet={'520元紅包一個',15/100;
        '1314元紅包一個',5/100;
        '黑絲水手服',20/100;
        '黑絲女仆裝',20/100;
        '抱抱×50次',20/100;
        '親親×50次',20/100;}; 
probVal=cell2mat(strSet(:,2));
% 將概率密度函數(shù)轉(zhuǎn)換為概率分布函數(shù)
for i=2:length(probVal)
    probVal(i)=probVal(i)+probVal(i-1);
end


fig=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;end

set(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)
    end
end


end

到此這篇關(guān)于利用Matlab制作一款刮刮樂抽獎特效的文章就介紹到這了,更多相關(guān)Matlab刮刮樂抽獎特效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解如何利用C++實(shí)現(xiàn)一個反射類

    詳解如何利用C++實(shí)現(xiàn)一個反射類

    這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)一個反射類,文中的示例代碼講解詳細(xì),具有一定的參考價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-03-03
  • 基于C++中常見編譯錯誤的總結(jié)詳解

    基于C++中常見編譯錯誤的總結(jié)詳解

    本篇文章是對C++中的常見編譯錯誤進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • wxWidgets實(shí)現(xiàn)無標(biāo)題欄窗口拖動效果

    wxWidgets實(shí)現(xiàn)無標(biāo)題欄窗口拖動效果

    這篇文章主要為大家詳細(xì)介紹了wxWidgets實(shí)現(xiàn)無標(biāo)題欄窗口拖動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C++中vector的用法實(shí)例解析

    C++中vector的用法實(shí)例解析

    這篇文章主要介紹了C++中vector的用法,詳細(xì)描述了vector的各種常見的用法及注意事項(xiàng),需要的朋友可以參考下
    2014-08-08
  • OpenCV 視頻中火焰檢測識別實(shí)踐

    OpenCV 視頻中火焰檢測識別實(shí)踐

    本文主要介紹了OpenCV 視頻中火焰檢測識別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C++實(shí)現(xiàn)LeetCode(106.由中序和后序遍歷建立二叉樹)

    C++實(shí)現(xiàn)LeetCode(106.由中序和后序遍歷建立二叉樹)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(106.由中序和后序遍歷建立二叉樹),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • OpenGL實(shí)現(xiàn)不規(guī)則區(qū)域填充算法

    OpenGL實(shí)現(xiàn)不規(guī)則區(qū)域填充算法

    這篇文章主要為大家詳細(xì)介紹了OpenGL實(shí)現(xiàn)不規(guī)則區(qū)域填充算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C語言在輸入輸出時遇到的常見問題總結(jié)

    C語言在輸入輸出時遇到的常見問題總結(jié)

    大家在平時的做題中是否會遇到和我一樣的煩惱,題目的代碼已經(jīng)基本完成,但是在輸出時候,總是和題目給出的樣例輸出格式不同?,導(dǎo)致題目不能通過。為了解決這一煩惱,我總結(jié)了以下幾點(diǎn),需要的可以參考一下
    2022-09-09
  • 深入分析:C++模板究竟會使代碼膨脹嗎

    深入分析:C++模板究竟會使代碼膨脹嗎

    今天和同事說到C++模板會使代碼膨脹, 可同事覺得不會。 同事的依據(jù)是: 如果模板會使代碼膨脹, 那么ATL和WTL里為什么還要大量使用模板? 同樣功能 ,ATL和WTL編譯出的可執(zhí)行文件可比MFC編譯的要小的多
    2013-04-04
  • 七夕表白! C語言實(shí)現(xiàn)愛情紅玫瑰

    七夕表白! C語言實(shí)現(xiàn)愛情紅玫瑰

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)愛情紅玫瑰,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08

最新評論