最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1.效果展示

程序運行效果如下:

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

2.程序原理說明

2.1 獎項設(shè)置

獎項設(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 隨機抽取

我們首先將離散型概率密度函數(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

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

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

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

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 滑動鼠標刮獎

判斷鼠標是否被點擊

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

鼠標滑動刮獎

該部分代碼:

[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)文章

  • VScode platformio使用的詳細步驟

    VScode platformio使用的詳細步驟

    使用VSCode作為編輯器,同時借助PlatformIO插件,可以幫助開發(fā)者更加高效地進行嵌入式開發(fā),本文主要介紹了VScode platformio使用的詳細步驟,感興趣的可以了解一下
    2023-10-10
  • Matlab實現(xiàn)黑洞優(yōu)化算法的示例代碼

    Matlab實現(xiàn)黑洞優(yōu)化算法的示例代碼

    根據(jù)黑洞現(xiàn)象原理首次提出BH 算法,它在傳統(tǒng)PSO基礎(chǔ)上引入了新的機制,有效地提高了收斂速度并防止了陷入局部極值的情況發(fā)生.本文將用Matlab實現(xiàn)這一算法,需要的可以參考一下
    2022-06-06
  • 10行C++代碼實現(xiàn)高性能HTTP服務(wù)

    10行C++代碼實現(xiàn)高性能HTTP服務(wù)

    這篇文章主要介紹了10行C++代碼如何實現(xiàn)高性能HTTP服務(wù),幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下
    2021-04-04
  • C++初階之list的模擬實現(xiàn)過程詳解

    C++初階之list的模擬實現(xiàn)過程詳解

    在C++中我們經(jīng)常使用STL,那個在那些我們常用的數(shù)據(jù)結(jié)構(gòu)vector,list的背后,又是如何實現(xiàn)的呢?這篇文章主要給大家介紹了關(guān)于C++初階之list的模擬實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • C語言二分法求解方程根的兩種方法

    C語言二分法求解方程根的兩種方法

    這篇文章主要為大家詳細介紹了C語言二分法求解方程根的兩種方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C++中sln,vcxproj,vcxproj.filters,lib,dll,exe的含義說明

    C++中sln,vcxproj,vcxproj.filters,lib,dll,exe的含義說明

    這篇文章主要介紹了C++中sln,vcxproj,vcxproj.filters,lib,dll,exe的含義說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • C/C++中的atan和atan2函數(shù)實例用法

    C/C++中的atan和atan2函數(shù)實例用法

    在本篇文章里小編給大家分享的是一篇關(guān)于C/C++中的atan和atan2函數(shù)實例用法相關(guān)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-02-02
  • OpenCV繪制正多邊形的方法

    OpenCV繪制正多邊形的方法

    這篇文章主要為大家詳細介紹了OpenCV繪制正多邊形的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 一些C語言中字符串的算法問題解決實例小結(jié)

    一些C語言中字符串的算法問題解決實例小結(jié)

    這篇文章主要介紹了一些C語言中字符串的算法問題解決實例小結(jié),包括將字符串轉(zhuǎn)化為int類型的數(shù)及旋轉(zhuǎn)字符串等操作,需要的朋友可以參考下
    2016-03-03
  • 深入理解C語言中編譯相關(guān)的常見錯誤

    深入理解C語言中編譯相關(guān)的常見錯誤

    本篇文章是對C語言中編譯相關(guān)的常見錯誤進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05

最新評論

陆川县| 临武县| 平湖市| 太湖县| 丹阳市| 波密县| 滕州市| 商洛市| 廉江市| 南汇区| 越西县| 定兴县| 东阿县| 济源市| 崇礼县| 高密市| 银川市| 余姚市| 岳池县| 夏河县| 阿鲁科尔沁旗| 石柱| 安徽省| 清远市| 鄢陵县| 香格里拉县| 广丰县| 龙门县| 绥化市| 宁国市| 彰武县| 新昌县| 泰兴市| 景宁| 阳原县| 丘北县| 岐山县| 腾冲县| 泾阳县| 蒙城县| 子长县|