婷婷综合国产,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
    九九久久精品视频| 尤物av一区二区| 高清成人免费视频| av电影在线观看一区| 免费人成精品欧美精品| 国内精品免费**视频| 大胆亚洲人体视频| 欧美性欧美巨大黑白大战| 成人免费看片app下载| 色一情一伦一子一伦一区| 欧美日韩国产影片| 亚洲国产成人午夜在线一区| 欧美性受xxxx| 国产精品色呦呦| 天天影视涩香欲综合网| 51精品国自产在线| 国产一区二区看久久| 日韩码欧中文字| 欧美色视频在线| 国产成人精品免费在线| 99久久精品一区| 国产丝袜在线精品| 色激情天天射综合网| 亚洲午夜av在线| 久久人人超碰精品| 免费成人在线观看视频| 欧洲av一区二区嗯嗯嗯啊| 亚洲男人电影天堂| 色婷婷综合五月| 1024成人网色www| 成人涩涩免费视频| 亚洲欧美一区二区在线观看| 国产乱淫av一区二区三区| 国产网站一区二区| 日本欧美一区二区| 国产精品视频一区二区三区不卡| 国产九色sp调教91| 日韩美女久久久| 日韩欧美一区二区视频| 国产在线播精品第三| 国产亚洲欧美一级| 99久久精品国产导航| 亚洲欧美电影一区二区| 日韩午夜在线观看视频| 成人网在线播放| 亚洲第一会所有码转帖| 在线电影院国产精品| 久久电影网电视剧免费观看| 国产精品萝li| 欧美日韩aaa| 福利一区在线观看| 亚洲高清久久久| 国产日本欧洲亚洲| 欧美在线免费观看视频| 青青草伊人久久| 久久理论电影网| 欧美一区午夜精品| 色悠久久久久综合欧美99| 国产高清成人在线| 蜜桃av噜噜一区| 日韩黄色免费网站| 精品国内二区三区| 欧美日韩高清一区二区不卡| 成人av网址在线观看| 国产一区二区主播在线| 免费观看91视频大全| 亚洲一区二区三区四区不卡| 国产精品国产精品国产专区不片| 制服丝袜亚洲播放| 国产精品剧情在线亚洲| 久久综合狠狠综合久久综合88| 亚洲欧美色一区| 久久影院电视剧免费观看| 精品久久久久av影院 | 在线成人午夜影院| 91国产免费观看| 丝袜美腿亚洲综合| 国产日韩精品久久久| 精品久久久久久亚洲综合网| 国产在线精品一区二区三区不卡| 欧美日韩中文字幕一区| 91农村精品一区二区在线| 欧美一区二区日韩| 亚洲图片一区二区| 欧美亚洲动漫制服丝袜| 国产精品视频看| 国产99久久久国产精品| 久久久久久久久久久久电影| 蜜桃视频在线观看一区二区| 欧美亚洲国产一区二区三区| 欧美日韩久久久久久| 亚洲欧美欧美一区二区三区| 97se亚洲国产综合在线| 亚洲欧洲在线观看av| 国产91丝袜在线18| 欧美精品一区二区久久婷婷| 日韩亚洲欧美中文三级| 日韩欧美国产综合在线一区二区三区| 亚洲国产精品黑人久久久| 久久国产福利国产秒拍| 久久久五月婷婷| 九色porny丨国产精品| 在线综合视频播放| 亚洲免费在线观看视频| 99久久99久久久精品齐齐| 国产精品电影一区二区三区| 成人丝袜视频网| 亚洲视频一区二区在线| 91丨porny丨国产| 亚洲一区二区三区视频在线| 欧美在线啊v一区| 亚洲欧美日韩一区二区三区在线观看| 成人av高清在线| 亚洲一区二区视频| 欧美精品免费视频| 成人在线综合网| 亚洲一二三级电影| 精品少妇一区二区三区视频免付费| 国产一区二区福利视频| 亚洲精品免费播放| 久久亚洲精华国产精华液| 91在线云播放| 日韩vs国产vs欧美| 1区2区3区欧美| 欧美大白屁股肥臀xxxxxx| 亚洲综合一区在线| 亚洲欧洲av一区二区三区久久| 视频在线观看一区| 久久久国产综合精品女国产盗摄| 色偷偷88欧美精品久久久| 国产一区二区三区不卡在线观看| 亚洲一级二级在线| 亚洲男人天堂一区| 日韩一区在线免费观看| 国产午夜亚洲精品午夜鲁丝片| 欧美一级艳片视频免费观看| 欧美日韩一区二区三区四区五区| av亚洲精华国产精华精| 国产成人综合在线| 国产一区二区三区四区在线观看 | 精品国产在天天线2019| 白白色 亚洲乱淫| 日韩av中文在线观看| 制服丝袜成人动漫| 美女久久久精品| 一区二区三区中文免费| 美女www一区二区| 一区二区成人在线观看| 欧洲一区二区av| 免费的成人av| 亚洲电影在线播放| 久久不见久久见免费视频7 | 91在线观看地址| 久久久久免费观看| 中文字幕亚洲区| 国产日韩影视精品| 欧美福利电影网| 日韩欧美一二区| 国产精品丝袜久久久久久app| 五月天一区二区三区| 国产精品影音先锋| 欧美一区二区精品在线| 亚洲欧美aⅴ...| 国产福利一区二区三区视频在线| 精品视频免费在线| 日韩精品成人一区二区在线| 91在线视频播放| 国产精品国产成人国产三级 | 91网站在线观看视频| 久久久久成人黄色影片| 国产麻豆精品视频| 欧美一级精品在线| 秋霞影院一区二区| 精品久久国产字幕高潮| 国产毛片精品视频| 国产精品久久99| 国产精品资源在线看| 国产亚洲欧美一级| 欧美成人三级在线| 97精品电影院| 国产成人免费在线| 精品一区二区在线视频| 亚洲国产精品欧美一二99| 欧美美女网站色| 国产精品国产a| 日韩专区欧美专区| 97久久精品人人爽人人爽蜜臀| 亚洲精品一区二区三区在线观看 | 在线观看国产91| 精品国产百合女同互慰| 亚洲香蕉伊在人在线观| 高清日韩电视剧大全免费| 亚洲一区欧美一区| 午夜电影一区二区三区| 久久国产综合精品| 91尤物视频在线观看| 一区二区三区在线免费播放| 亚洲mv大片欧洲mv大片精品| 美脚の诱脚舐め脚责91| 激情文学综合插|