欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 如何利用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制作一款真正的拼圖小游戲的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    少妇激情一区二区三区视频| 成人性视频免费看| 色综合色狠狠综合色| 色婷婷av777| 欧美日韩你懂得| 一区二区中文字幕在线| 免费三级欧美电影| 国产免费a级片| 色八戒一区二区三区| 国产精品亲子伦对白| 国产在线播放一区三区四| 可以直接看的无码av| 884aa四虎影成人精品一区| 中文字幕视频一区二区三区久| 狠狠v欧美v日韩v亚洲ⅴ| 国产av自拍一区| 精品久久久久99| 亚洲va中文字幕| 95视频在线观看| 欧美日韩mp4| 亚洲成av人片在线观看无码| 免费高清视频在线观看| 色天天综合色天天久久| 亚洲天堂av老司机| 波多野结衣一区二区三区 | 精品人妻一区二区三| 老女人性淫交视频| 国产精品每日更新| 国产高清精品在线| 欧美激情精品久久久久久免费| 欧美韩国日本不卡| 福利一区在线观看| 99热6这里只有精品| 国产欧美一区二区精品忘忧草| 久久不见久久见中文字幕免费| www国产视频| 日韩一卡二卡三卡四卡| 日本aⅴ精品一区二区三区| www.超碰97| 亚洲精品一区二区三区影院| 精品一区二区三区久久| 国产第一页精品| 国产精品久久久久久久久晋中| 国产91精品精华液一区二区三区 | 美女性感视频久久| 欧美双性人妖o0| 日韩女优毛片在线| 韩国精品免费视频| 国产一二三四区| 亚洲久本草在线中文字幕| 亚洲最大视频网| 日韩欧美高清一区| 国产一区二区福利视频| 少妇影院在线观看| 欧美二区三区91| 美女网站在线免费欧美精品| 免费国产羞羞网站美图| 亚洲第一久久影院| 国产欧美一区二区三区在线观看视频| 亚洲欧洲精品一区二区精品久久久| 91日韩一区二区三区| 欧美一区二区三区喷汁尤物| 国产精品18久久久久久久久久久久 | 在线中文字幕一区| 日本大胆欧美人术艺术动态| 特级西西人体高清大胆| 亚洲亚洲精品在线观看| 青青草自拍偷拍| 亚洲国产人成综合网站| 三区四区在线观看| 亚洲第一综合色| 国产一区二区精彩视频| 婷婷久久综合九色综合绿巨人| 国产又粗又猛又爽又黄的视频小说| 一区二区免费看| 成年人在线免费看片| 一区二区三区日韩欧美| 91无套直看片红桃在线观看| 偷拍一区二区三区四区| 91人妻一区二区三区蜜臀| 日韩国产一二三区| 色妞www精品视频| 精品亚洲国产成人av制服丝袜| 欧美最新大片在线看| 国产自产视频一区二区三区| 欧美日韩一级大片网址| 国产99久久久国产精品| 日韩欧美黄色影院| 欧美高清精品一区二区| 国产日本一区二区| 黄色短视频在线观看| 亚洲麻豆国产自偷在线| 午夜黄色福利视频| 日韩av午夜在线观看| 在线精品亚洲一区二区不卡| 国产剧情一区二区三区| 日韩欧美自拍偷拍| 性xxxxxxxxx| 国产精品大尺度| 国产亚洲精品精品精品| 蜜臀久久99精品久久久久久9| 欧美亚洲国产怡红院影院| 国产a精品视频| 久久久久久99久久久精品网站| 亚洲综合自拍网| 一区二区国产视频| 国产盗摄一区二区三区在线| 国产一区二区网址| 欧美成人一区二区| 国产美女视频免费观看下载软件| 亚洲欧美电影一区二区| 欧美激情图片小说| 国产 欧美在线| 国产欧美日韩麻豆91| 日韩人妻无码精品综合区| 日本网站在线观看一区二区三区| 欧美日韩一区二区三区四区| 99久精品国产| 亚洲人午夜精品天堂一二香蕉| 夫妻性生活毛片| 国产91精品免费| 中文在线免费一区三区高中清不卡| 欧美波霸videosex极品| 麻豆精品国产传媒mv男同| 日韩一级片在线播放| yy1111111| 日本在线播放一区二区三区| 91精品国产91久久综合桃花 | 久久丫精品忘忧草西安产品| 男人的天堂亚洲一区| 欧美酷刑日本凌虐凌虐| 秘密基地免费观看完整版中文| 一区二区三区在线播放| 欧美亚洲综合在线| 一区二区在线免费观看视频| 一区二区成人在线观看| 欧美视频在线一区二区三区| 国产a√精品区二区三区四区| 一区二区三区在线播放| 欧美性xxxxxx少妇| 国产亚洲精品成人a| 爽爽淫人综合网网站| 日韩欧美一区二区久久婷婷| 中文字幕在线观看网址| 美女一区二区久久| 国产人成亚洲第一网站在线播放 | 天天射综合影视| 欧美一级免费观看| 全黄一级裸体片| 国产一区二区三区四区五区美女 | 在线免费观看a级片| 日本美女视频一区二区| 久久综合狠狠综合| 精品在线观看一区| 99热这里都是精品| 一区二区三区免费网站| 3atv一区二区三区| 国产综合精品在线| 成人中文字幕电影| 亚洲精选视频在线| 欧美一区二区在线免费观看| 亚洲 小说 欧美 激情 另类| 国产成人免费视频网站| 亚洲男人的天堂av| 日韩午夜在线观看视频| 国产成人福利在线| 不卡的看片网站| 三级在线观看一区二区| 国产亚洲一二三区| 日本高清不卡aⅴ免费网站| 四虎永久免费观看| 久草精品在线观看| 亚洲免费视频成人| 欧美一区二区三区白人| av在线免费播放网址| 国产清纯白嫩初高中在线观看性色| 天天综合天天综合色| 国产区在线观看成人精品| 欧美亚洲动漫另类| 波多野结衣片子| www.成人网.com| 青青国产91久久久久久| 国产精品美女久久久久aⅴ国产馆| 精品视频资源站| 91狠狠综合久久久久久| 91视视频在线观看入口直接观看www | 黄色在线免费播放| 国产精品一区二区在线播放| 一区二区三区高清在线| 精品国产精品一区二区夜夜嗨| 亚洲av鲁丝一区二区三区| 亚洲av成人无码一二三在线观看| 国产精品99久久久久久宅男| 亚洲国产美国国产综合一区二区| 久久久久久久综合色一本| 欧美色手机在线观看| 国产成人精品视频免费| 美女久久久久久久久| 国产99久久久精品| 日本欧美一区二区|