婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 如何利用Matlab制作一款真正的拼圖小游戲

如何利用Matlab制作一款真正的拼圖小游戲

熱門標簽:廣告地圖標注app 騰訊外呼線路 公司電話機器人 唐山智能外呼系統一般多少錢 陜西金融外呼系統 激戰2地圖標注 白銀外呼系統 哈爾濱ai外呼系統定制 海南400電話如何申請

效果:



簡單原理介紹:

1構造0,1矩陣作為每片拼圖的透明度,可以構造出不規則形狀的拼圖(image函數有alphaData屬性可以設置)

jigsawMask=zeros(101*5,101*5);
jigsawMask(102:404,102:404)=1;
[xMesh,yMesh]=meshgrid(1:101*5,1:101*5);
dis1=sqrt((xMesh-51).^2+(yMesh-253).^2);
dis2=sqrt((xMesh-505+50).^2+(yMesh-253).^2);
dis3=sqrt((xMesh-253).^2+(yMesh-152).^2);
dis4=sqrt((xMesh-253).^2+(yMesh-505+151).^2);
bool1=dis1=50;
bool2=dis2=50;
bool3=dis3=50;
bool4=dis4=50;
jigsawMask(bool1)=1;
jigsawMask(bool2)=1;
jigsawMask(bool3)=0;
jigsawMask(bool4)=0;
jigsawMask(253-25:253+25,51:505-50)=1;
jigsawMask(1:152,253-25:253+25)=0;
jigsawMask(505-151:505,253-25:253+25)=0;

2為每片拼圖塊設置ButtonDownFcn屬性,將其改造成按鈕

完整代碼:

function jigsaw2(path)

if nargin1||isempty(path)
    [filename, pathname] = uigetfile({'*.jpg;*.tif;*.png;*.jpeg','All Image Files';...
            '*.*','All Files' });
    path = [pathname,filename];
    
end
oriPic=imread(path);
%imshow(oriPic)

jigsawMask=zeros(101*5,101*5);
jigsawMask(102:404,102:404)=1;
[xMesh,yMesh]=meshgrid(1:101*5,1:101*5);
dis1=sqrt((xMesh-51).^2+(yMesh-253).^2);
dis2=sqrt((xMesh-505+50).^2+(yMesh-253).^2);
dis3=sqrt((xMesh-253).^2+(yMesh-152).^2);
dis4=sqrt((xMesh-253).^2+(yMesh-505+151).^2);
bool1=dis1=50;
bool2=dis2=50;
bool3=dis3=50;
bool4=dis4=50;
jigsawMask(bool1)=1;
jigsawMask(bool2)=1;
jigsawMask(bool3)=0;
jigsawMask(bool4)=0;
jigsawMask(253-25:253+25,51:505-50)=1;
jigsawMask(1:152,253-25:253+25)=0;
jigsawMask(505-151:505,253-25:253+25)=0;


resizePic=imresize(oriPic,[101*(3*4+2),101*(3*4+2)]);
Mainfig=figure('units','pixels','position',[300 80 720 400],...
                       'Numbertitle','off','menubar','none','resize','off',...
                       'name','jigsaw');
Mainaxes=axes('parent',Mainfig,'position',[0 0 1 1],...
                    'XLim', [0 720],...
                    'YLim', [0 400],...
                    'NextPlot','add',...
                    'layer','bottom',...
                    'YDir','reverse',...
                    'Visible','on',...
                    'XTick',[], ...
                    'YTick',[]);
                
                
image(Mainaxes,[420,420+14*20],[20,20+14*20],resizePic)
whiteMask=150*ones(100,100,3);
whiteMask(2:99,2:99,:)=255;
for i=1:4
    for j=1:4
        image(Mainaxes,440+[0,60]+(j-1)*60,40+[0,60]+(i-1)*60,uint8(whiteMask),...
            'UserData',[i,j]','Visible','on');
    end
end
for i=1:4
    for j=1:4
        picHdlR(j+(i-1)*4)=image(Mainaxes,420+[0,100]+(j-1)*60,20+[0,100]+(i-1)*60,uint8(zeros(100,100,3)),'alphaData',zeros(100,100),...
            'UserData',j+(i-1)*4,'ButtonDownFcn',@putPiece,'Visible','on');
    end
end

logsheetR=zeros(1,16);
    function putPiece(object,~)
        object.UserData
        if logsheetR(object.UserData)==0handHdl.UserData~=0
            object.CData=handHdl.CData;
            object.AlphaData=handHdl.AlphaData;
            logsheetR(object.UserData)=handHdl.UserData;
            handHdl.UserData=0;
            handHdl.CData=uint8(zeros(100,100,3));
            handHdl.AlphaData=zeros(100,100);
        elseif logsheetR(object.UserData)~=0handHdl.UserData==0
            handHdl.UserData=logsheetR(object.UserData);
            handHdl.CData=object.CData;
            handHdl.AlphaData=object.AlphaData;
            logsheetR(object.UserData)=0;
            object.CData=uint8(zeros(100,100,3));
            object.AlphaData=zeros(100,100);
        end
        if all(logsheetR==1:16)
            text1.String='恭喜你,游戲勝利!';
        end
    end



%==========================================================================
                
for i=1:4
    for j=1:4
        tempPiece=resizePic((i-1)*303+1:(i-1)*303+505,(j-1)*303+1:(j-1)*303+505,:);
        if mod(i+j,2)==0     
            tempMask=jigsawMask';
        else
            tempMask=jigsawMask;
        end
        if j==1
            tempMask(:,1:101)=0;
            tempMask(102:404,102:201)=1;
        end
        if j==4
            tempMask(:,405:505)=0;
            tempMask(102:404,304:404)=1;
        end
        if i==1
            tempMask(1:101,:)=0;
            tempMask(102:201,102:404)=1;
        end
        if i==4
            tempMask(405:505,:)=0;
            tempMask(304:404,102:404)=1;
        end
        picHdl(j+(i-1)*4)=image(Mainaxes,[0,100]+(j-1)*100,[0,100]+(i-1)*100,tempPiece,'alphaData',tempMask,...
            'UserData',j+(i-1)*4,'ButtonDownFcn',@selectPiece);
        
        whiteHdl(j+(i-1)*4)=image(Mainaxes,[0,100]+(j-1)*100,[0,100]+(i-1)*100,uint8(240*ones(100,100,3)),'alphaData',ones(100,100),...
            'UserData',[i,j],'ButtonDownFcn',@selectPiece,'Visible','off');
    end
end

RandNum=rand(1,16);
[~,logSheet]=sort(RandNum);

for i=1:4
    for j=1:4
        picHdl(logSheet(j+(i-1)*4)).XData=[0,100]+(j-1)*100;
        picHdl(logSheet(j+(i-1)*4)).YData=[0,100]+(i-1)*100;
    end
end


handHdl=image(Mainaxes,[0,100],[0,100],uint8(zeros(100,100,3)),...
    'alphaData',zeros(100,100),'UserData',0,'PickableParts','none');

    set(gcf,'WindowButtonMotionFcn',@onhandfunc)
    function onhandfunc(~,~)
        xy=get(gca,'CurrentPoint');
        x=xy(1,1);y=xy(1,2);
        handHdl.XData=[x-50,x+50];
        handHdl.YData=[y-50,y+50];  
    end

    function selectPiece(object,~)
        %object.UserData
        if length(object.UserData)==1
            if handHdl.UserData~=0
                picHdl(handHdl.UserData).Visible='on';  
                whiteHdl(logSheet==handHdl.UserData).Visible='off';
            end
            object.Visible='off';
            whiteHdl(logSheet==object.UserData).Visible='on';
            
            handHdl.UserData=object.UserData;
            handHdl.CData=object.CData;
            handHdl.AlphaData=object.AlphaData;
        else
            if handHdl.UserData==0
            else
                ii=object.UserData(1);
                jj=object.UserData(2);
                object.Visible='off';
                picHdl(handHdl.UserData).XData=[0,100]+(jj-1)*100;
                picHdl(handHdl.UserData).YData=[0,100]+(ii-1)*100;
                picHdl(handHdl.UserData).Visible='on';
                logSheet(jj+(ii-1)*4)=handHdl.UserData;
                
                handHdl.UserData=0;
                handHdl.CData=uint8(zeros(100,100,3));
                handHdl.AlphaData=zeros(100,100);              
            end
        end 
    end
%==========================================================================
fill([420,420+14*20,420+14*20,420],[320,320,380,380],[0.9412    0.9412    0.9412],'LineWidth',5,'EdgeColor',[0.7,0.7,0.7])
text1=text(430,350,'請點擊拼圖塊中心位置移動拼圖塊','fontSize',12);

end

運行m文件后選擇一張接近方形的圖片即可開始游戲

總結

到此這篇關于如何利用Matlab制作一款真正的拼圖小游戲的文章就介紹到這了,更多相關Matlab拼圖小游戲內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Matlab實現時間序列預測分類實例代碼
  • 利用Matlab繪制各類特殊圖形的實例代碼
  • 圖文詳解matlab原始處理圖像幾何變換
  • Matlab如何實現矩陣復制擴充
  • 利用Matlab提取圖片曲線

標簽:鷹潭 惠州 黑龍江 益陽 四川 常德 上海 黔西

巨人網絡通訊聲明:本文標題《如何利用Matlab制作一款真正的拼圖小游戲》,本文關鍵詞  如何,利用,Matlab,制作,一款,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《如何利用Matlab制作一款真正的拼圖小游戲》相關的同類信息!
  • 本頁收集關于如何利用Matlab制作一款真正的拼圖小游戲的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美日韩视频一区二区| 日韩一级二级三级精品视频| 欧美日韩中文精品| 久久综合色8888| 亚洲综合色自拍一区| 国产精品一区二区三区四区| 91高清视频在线| 欧美高清在线一区二区| 精品一区二区三区免费观看| 精品视频在线视频| 亚洲欧美欧美一区二区三区| 国产成人免费视| 精品国产麻豆免费人成网站| 亚洲国产一区二区三区青草影视| 99re成人精品视频| 国产精品色一区二区三区| 国产一区欧美二区| 欧美成人性战久久| 毛片一区二区三区| 91精品久久久久久蜜臀| 一区二区三区高清不卡| 91免费国产视频网站| 中文av一区二区| 粉嫩绯色av一区二区在线观看| 国产三级一区二区| 久久新电视剧免费观看| 久久精品国产一区二区三| 91精品国产麻豆国产自产在线| 亚洲五码中文字幕| 欧美午夜片在线看| 亚洲永久精品国产| 欧美日韩大陆一区二区| 肉肉av福利一精品导航| 日韩午夜在线观看视频| 六月婷婷色综合| wwwwxxxxx欧美| 国产成人精品在线看| 国产精品免费视频一区| 99这里只有久久精品视频| 1024国产精品| 色综合天天综合网天天狠天天 | 欧美一区二区精品在线| 午夜欧美视频在线观看| 日韩一区二区三免费高清| 麻豆国产精品视频| 久久欧美中文字幕| 成+人+亚洲+综合天堂| 亚洲男人天堂av| 这里只有精品99re| 麻豆成人av在线| 国产欧美日韩卡一| 色综合久久99| 美女看a上一区| 中文字幕二三区不卡| 99久久综合狠狠综合久久| 亚洲mv在线观看| 国产午夜精品久久久久久免费视| 懂色av噜噜一区二区三区av| 亚洲小说春色综合另类电影| 日韩网站在线看片你懂的| av网站免费线看精品| 亚洲成人一二三| 国产亚洲欧美日韩日本| 欧洲视频一区二区| 国内精品国产成人| 亚洲成人免费在线| 国产亚洲欧美日韩日本| 欧美精品自拍偷拍| 岛国一区二区在线观看| 亚洲成a人v欧美综合天堂下载| 精品欧美乱码久久久久久1区2区| av一区二区久久| 久久草av在线| 伊人性伊人情综合网| 26uuu国产电影一区二区| 日本韩国视频一区二区| 国产一区二区免费看| 亚洲国产日韩在线一区模特| 久久精品视频一区二区| 91麻豆精品国产91久久久资源速度| 国产伦精一区二区三区| 日韩中文字幕区一区有砖一区 | 国产在线精品一区二区夜色| 亚洲精品网站在线观看| 久久久久久久av麻豆果冻| 欧美视频完全免费看| 91一区一区三区| 国产乱妇无码大片在线观看| 日韩av在线免费观看不卡| 亚洲精品日产精品乱码不卡| 久久亚区不卡日本| 日韩一区二区电影在线| 欧美日韩在线不卡| caoporn国产精品| 91在线播放网址| 亚洲三级理论片| 久久婷婷久久一区二区三区| 欧美日韩国产123区| 91啦中文在线观看| 成人视屏免费看| 国产激情视频一区二区三区欧美 | 久久久久久久久久久电影| 91精品国产黑色紧身裤美女| 在线视频国产一区| 91蜜桃传媒精品久久久一区二区| 成人av电影在线观看| 国产a久久麻豆| 成人精品视频一区二区三区尤物| 激情六月婷婷久久| 久久91精品国产91久久小草| 六月婷婷色综合| 久久99九九99精品| 国产精品一品二品| 国产馆精品极品| 国产成人av一区二区三区在线| 国产一区二区看久久| 国产一区二区免费看| 91美女在线观看| 久久只精品国产| 精品区一区二区| 国产日产欧美一区二区三区| 国产日韩欧美制服另类| 中文字幕一区二区三区精华液| 中文字幕五月欧美| 亚洲永久精品大片| 男人的天堂亚洲一区| 国产精品一区二区黑丝| 99热99精品| 欧美日韩国产综合视频在线观看| 日韩一卡二卡三卡四卡| 国产亚洲自拍一区| 一区二区三区在线视频免费观看| 亚洲精品国产无套在线观| 首页国产欧美久久| 国产乱码精品一区二区三区忘忧草 | 日韩在线卡一卡二| 激情综合一区二区三区| 成人午夜在线视频| 欧洲精品中文字幕| 精品久久久久久久久久久久包黑料| 国产欧美一区二区精品忘忧草| 国产精品伦理在线| 视频在线观看91| 国产精品一区二区不卡| 在线欧美日韩精品| 欧美mv日韩mv亚洲| 中文字幕亚洲欧美在线不卡| 亚洲午夜成aⅴ人片| 国产精品18久久久久久久久久久久 | 午夜精品久久久久久久蜜桃app| 久久av老司机精品网站导航| 91在线看国产| 日韩免费视频一区二区| 亚洲青青青在线视频| 精久久久久久久久久久| 欧美在线免费播放| 日本一区二区三区四区在线视频 | 奇米影视一区二区三区小说| 成人午夜在线免费| 欧美xxxxx牲另类人与| 亚洲人成人一区二区在线观看 | 8x福利精品第一导航| 综合色中文字幕| 狠狠网亚洲精品| 欧美日韩亚洲国产综合| 国产无人区一区二区三区| 无码av免费一区二区三区试看| 成人高清免费观看| 精品免费99久久| 亚洲超碰精品一区二区| 不卡av在线免费观看| 日韩精品一区二区三区老鸭窝 | 91丝袜呻吟高潮美腿白嫩在线观看| 欧美va亚洲va香蕉在线| 亚洲国产精品一区二区久久恐怖片| 国产精品一级二级三级| 日韩精品在线网站| 日韩不卡一二三区| 欧美日韩一区二区三区高清| 一区二区三区中文字幕精品精品| 国产精品一区二区在线看| 日韩美女视频一区二区在线观看| 亚洲成人av电影在线| 91国偷自产一区二区三区成为亚洲经典 | 欧美性受极品xxxx喷水| 中文字幕视频一区| 成人a级免费电影| 欧美激情一区二区三区| 国产一区二区在线电影| 欧美一区二区日韩| 免费欧美高清视频| 日韩精品一区二区三区在线 | 天天亚洲美女在线视频| 欧美视频在线观看一区二区| 一区二区三区欧美日韩| 欧美影院午夜播放| 亚洲午夜一二三区视频| 欧美色图在线观看| 亚洲6080在线| 欧美一级国产精品|