怎么用Matlab编写简易版连连看小游戏(matlab,开发技术)

时间:2024-05-02 21:11:57 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

游戏截图

怎么用Matlab编写简易版连连看小游戏

怎么用Matlab编写简易版连连看小游戏

怎么用Matlab编写简易版连连看小游戏

游戏组装说明

我们的变量path输入的是图像包的相对路径或绝对路径

怎么用Matlab编写简易版连连看小游戏

这里我们由于文件夹名称就叫“图片”所以直接path='图片’是没啥问题的。

怎么用Matlab编写简易版连连看小游戏

文件夹里就是图片素材啦,其名称没有任何要求,形状最好是方的,不过不是的话问题也不大,程序会自动将其拉伸成方的。。。。。。。。

怎么用Matlab编写简易版连连看小游戏

我们这里要求的是读入jpg格式,想要png,jpg都读的话,。。。。。最简单的就是直接读两次

完整代码

functionConnectingGame%连连看图片导入============================================================path='图片';picInformation=dir(fullfile(path,'*.jpg'));N=length(picInformation);fori=1:NpicList.(['pic',num2str(i)])=...imread([path,'\',picInformation(i).name]);end%全局变量==================================================================globalselectedPosclickPosglobalredLinePntsglobalpicMatselectedPos=[];redLinePnts=[];%图片矩阵生成==============================================================functioncreateMat(~,~)tempMat=zeros(8,6);whileany(any(tempMat==0))zeosPos=find(tempMat==0);temprand=rand(1,length(zeosPos));[~,tempSort]=sort(temprand);tempNum=zeosPos(tempSort(1:2));tempMat(tempNum)=randi(N);endpicMat=zeros(10,8);picMat(2:9,2:7)=tempMat;endcreateMat()%主要框架生成==============================================================MainFig=figure('units','pixels','position',[750250(9*100+10*5+20)*0.5(7*100+8*5+20)*0.5],...'Numbertitle','off','menubar','none','resize','off',...'name','ConnectingGame|byslandarer');axes('parent',MainFig,'position',[0011],...'XLim',[4010*100+10*5-40],...'YLim',[408*100+8*5-40],...'color',[0.95,0.95,0.95],...'NextPlot','add',...'layer','bottom',...'Visible','on',...'YDir','reverse',...'XTick',[],...'YTick',[]);uh2=uimenu('label','帮助');uimenu(uh2,'label','重新开始','callback',@restartGame)fori=2:9forj=2:7drawPicHdl(i,j)=image([(i-1)*100,i*100]+(i-1)*5,[(j-1)*100,j*100]+(j-1)*5,...picList.(['pic',num2str(picMat(i,j))]),'tag',[num2str(i),num2str(j)],...'ButtonDownFcn',@clickOnPic);endend%重新开始函数==============================================================functionrestartGame(~,~)createMat()forii=2:9forjj=2:7set(drawPicHdl(ii,jj),'CData',picList.(['pic',num2str(picMat(ii,jj))]))endendend%主函数====================================================================functionclickOnPic(object,~)redLinePnts=[];clickPos=[str2num(object.Tag(1)),str2num(object.Tag(2))];ifisempty(selectedPos),selectedPos=clickPos;endif~all(selectedPos==clickPos)%-------------------------------------------------------------------------------------------------condition1=0;condition2=0;switch1caseany(selectedPos(1)==clickPos(1))condition1=abs(selectedPos(2)-clickPos(2))==1;tempVector1=sort([selectedPos(2),clickPos(2)])+[1-1];tempSum=sum(picMat(clickPos(1),tempVector1(1):tempVector1(2)));condition2=(tempSum==0)&~isempty(picMat(clickPos(1),tempVector1(1):tempVector1(2)));caseany(selectedPos(2)==clickPos(2))condition1=abs(selectedPos(1)-clickPos(1))==1;tempVector1=sort([selectedPos(1),clickPos(1)])+[1-1];tempSum=sum(picMat(tempVector1(1):tempVector1(2),clickPos(2)));condition2=(tempSum==0)&~isempty(picMat(clickPos(1),tempVector1(1):tempVector1(2)));endif(condition1||condition2)&&picMat(clickPos(1),clickPos(2))==picMat(selectedPos(1),selectedPos(2))redLinePnts=[selectedPos;clickPos];end%-------------------------------------------------------------------------------------------------ifisempty(redLinePnts)tempNode=[selectedPos(1),clickPos(2)];tempVector1=[selectedPos(2)+1,clickPos(2)].*(clickPos(2)>selectedPos(2))+...[clickPos(2),selectedPos(2)-1].*(clickPos(2)<=selectedPos(2));tempVector2=[selectedPos(1),clickPos(1)-1].*(clickPos(1)>selectedPos(1))+...[clickPos(1)+1,selectedPos(1)].*(clickPos(1)<=selectedPos(1));condition1=(sum(picMat(selectedPos(1),tempVector1(1):tempVector1(2)))==0);condition2=sum(picMat(tempVector2(1):tempVector2(2),clickPos(2)))==0;condition3=picMat(selectedPos(1),selectedPos(2))==picMat(clickPos(1),clickPos(2));ifall([condition1,condition2,condition3])redLinePnts=[selectedPos;tempNode;clickPos];endendifisempty(redLinePnts)tempNode=[clickPos(1),selectedPos(2)];tempVector1=[clickPos(2)+1,selectedPos(2)].*(selectedPos(2)>clickPos(2))+...[selectedPos(2),clickPos(2)-1].*(selectedPos(2)<=clickPos(2));tempVector2=[clickPos(1),selectedPos(1)-1].*(selectedPos(1)>clickPos(1))+...[selectedPos(1)+1,clickPos(1)].*(selectedPos(1)<=clickPos(1));condition1=sum(picMat(clickPos(1),tempVector1(1):tempVector1(2)))==0;condition2=sum(picMat(tempVector2(1):tempVector2(2),selectedPos(2)))==0;condition3=picMat(selectedPos(1),selectedPos(2))==picMat(clickPos(1),clickPos(2));ifall([condition1,condition2,condition3])redLinePnts=[selectedPos;tempNode;clickPos];endend%-------------------------------------------------------------------------------------------------ifisempty(redLinePnts)forii=[selectedPos(1):-1:1,selectedPos(1):10]tempNode1=[ii,selectedPos(2)];tempNode2=[ii,clickPos(2)];tempVector1=[selectedPos(1)+1,ii].*(ii>selectedPos(1))+[ii,selectedPos(1)-1].*(ii<=selectedPos(1));tempVector2=[clickPos(1)+1,ii].*(ii>clickPos(1))+[ii,clickPos(1)-1].*(ii<=clickPos(1));tempVector3=sort([selectedPos(2),clickPos(2)]);condition1=sum(picMat(tempVector1(1):tempVector1(2),selectedPos(2)))==0;condition2=sum(picMat(tempVector2(1):tempVector2(2),clickPos(2)))==0;condition3=sum(picMat(ii,tempVector3(1):tempVector3(2)))==0;condition4=picMat(selectedPos(1),selectedPos(2))==picMat(clickPos(1),clickPos(2));ifall([condition1,condition2,condition3,condition4])redLinePnts=[selectedPos;tempNode1;tempNode2;clickPos];breakendendendifisempty(redLinePnts)forjj=[selectedPos(2):-1:1,selectedPos(2):8]tempNode1=[selectedPos(1),jj];tempNode2=[clickPos(1),jj];tempVector1=[selectedPos(2)+1,jj].*(jj>selectedPos(2))+[jj,selectedPos(2)-1].*(jj<=selectedPos(2));tempVector2=[clickPos(2)+1,jj].*(jj>clickPos(2))+[jj,clickPos(2)-1].*(jj<=clickPos(2));tempVector3=sort([selectedPos(1),clickPos(1)]);condition1=sum(picMat(selectedPos(1),tempVector1(1):tempVector1(2)))==0;condition2=sum(picMat(clickPos(1),tempVector2(1):tempVector2(2)))==0;condition3=sum(picMat(tempVector3(1):tempVector3(2),jj))==0;condition4=picMat(selectedPos(1),selectedPos(2))==picMat(clickPos(1),clickPos(2));ifall([condition1,condition2,condition3,condition4])redLinePnts=[selectedPos;tempNode1;tempNode2;clickPos];breakendendend%-------------------------------------------------------------------------------------------------if~isempty(redLinePnts)redLinePntsX=(redLinePnts(:,1)-1).*100+(redLinePnts(:,1)-1).*5+50;redLinePntsY=(redLinePnts(:,2)-1).*100+(redLinePnts(:,2)-1).*5+50;RedLine=plot(redLinePntsX,redLinePntsY,'Color',[100],'LineWidth',2.5);pause(0.3)delete(RedLine)picMat(selectedPos(1),selectedPos(2))=0;picMat(clickPos(1),clickPos(2))=0;set(drawPicHdl(selectedPos(1),selectedPos(2)),'CData',ones(100,100,3).*0.95);set(drawPicHdl(clickPos(1),clickPos(2)),'CData',ones(100,100,3).*0.95);selectedPos=[];elseselectedPos=clickPos;endendendend
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:怎么用Matlab编写简易版连连看小游戏的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:jquery如何改变img的src属性下一篇:

11 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18