怎么用Matlab编写简易版连连看小游戏
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"怎么用Matlab编写简易版连连看小游戏",在日常操作中,相信很多人在怎么用Matlab编写简易版连连看小游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家
千家信息网最后更新 2026年11月02日怎么用Matlab编写简易版连连看小游戏
这篇文章主要介绍"怎么用Matlab编写简易版连连看小游戏",在日常操作中,相信很多人在怎么用Matlab编写简易版连连看小游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么用Matlab编写简易版连连看小游戏"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
游戏截图

游戏组装说明
我们的变量path输入的是图像包的相对路径或绝对路径
这里我们由于文件夹名称就叫"图片"所以直接path='图片’是没啥问题的。
文件夹里就是图片素材啦,其名称没有任何要求,形状最好是方的,不过不是的话问题也不大,程序会自动将其拉伸成方的。。。。。。。。
我们这里要求的是读入jpg格式,想要png,jpg都读的话,。。。。。最简单的就是直接读两次
完整代码
function ConnectingGame%连连看图片导入============================================================path='图片';picInformation=dir(fullfile(path,'*.jpg'));N=length(picInformation);for i=1:N picList.(['pic',num2str(i)])=... imread([path,'\',picInformation(i).name]);end%全局变量==================================================================global selectedPos clickPosglobal redLinePntsglobal picMatselectedPos=[];redLinePnts=[];%图片矩阵生成============================================================== function createMat(~,~) tempMat=zeros(8,6); while any(any(tempMat==0)) zeosPos=find(tempMat==0); temprand=rand(1,length(zeosPos)); [~,tempSort]=sort(temprand); tempNum=zeosPos(tempSort(1:2)); tempMat(tempNum)=randi(N); end picMat=zeros(10,8); picMat(2:9,2:7)=tempMat; endcreateMat()%主要框架生成==============================================================MainFig=figure('units','pixels','position',[750 250 (9*100+10*5+20)*0.5 (7*100+8*5+20)*0.5],... 'Numbertitle','off','menubar','none','resize','off',... 'name','ConnectingGame | by slandarer');axes('parent',MainFig,'position',[0 0 1 1],... 'XLim', [40 10*100+10*5-40],... 'YLim', [40 8*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)for i=2:9 for j=2:7 drawPicHdl(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%重新开始函数============================================================== function restartGame(~,~) createMat() for ii=2:9 for jj=2:7 set(drawPicHdl(ii,jj),'CData',picList.(['pic',num2str(picMat(ii,jj))])) end end end%主函数==================================================================== function clickOnPic(object,~) redLinePnts=[]; clickPos=[str2num(object.Tag(1)),str2num(object.Tag(2))]; if isempty(selectedPos),selectedPos=clickPos;end if ~all(selectedPos==clickPos) %------------------------------------------------------------------------------------------------- condition1=0;condition2=0; switch 1 case any(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))); case any(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))); end if (condition1||condition2)&&picMat(clickPos(1),clickPos(2))==picMat(selectedPos(1),selectedPos(2)) redLinePnts=[selectedPos;clickPos]; end %------------------------------------------------------------------------------------------------- if isempty(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)); if all([condition1,condition2,condition3]) redLinePnts=[selectedPos;tempNode;clickPos]; end end if isempty(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)); if all([condition1,condition2,condition3]) redLinePnts=[selectedPos;tempNode;clickPos]; end end %------------------------------------------------------------------------------------------------- if isempty(redLinePnts) for ii=[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)); if all([condition1,condition2,condition3,condition4]) redLinePnts=[selectedPos;tempNode1;tempNode2;clickPos]; break end end end if isempty(redLinePnts) for jj=[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)); if all([condition1,condition2,condition3,condition4]) redLinePnts=[selectedPos;tempNode1;tempNode2;clickPos]; break end end end %------------------------------------------------------------------------------------------------- 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',[1 0 0],'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=[]; else selectedPos=clickPos; end end endend到此,关于"怎么用Matlab编写简易版连连看小游戏"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
图片
连连看
小游戏
简易
学习
问题
帮助
函数
变量
名称
就是
文件
文件夹
更多
路径
生成
实用
接下来
不大
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
瑰夏咖啡
百单网互联网科技有限公司
互联网科技工作委员会毛军
国智互联网科技
致聘互联网科技
新浪科技互联网
互联网科技小额贷款
互联网科技公司名称
海南科技产业互联网平台
科技赋能互联网健康
互联网教育科技公司vipkid
互联网科技与大数据专业
世界互联网领先科技成果获奖
长沙互联网科技
烟台灵鸽互联网科技有限公司
江苏互联网智能科技软件
半导体行业属于互联网高科技类吗
玉溪新华互联网科技怎么选
互联网科技创业计划的风险分析
颐高云石互联网科技
上海睿民互联网科技有限公司
哈尔滨大商圈互联网科技有限公司
互联网科技公司发展
互联网科技集团
丰台科技园 互联网
左右互联网络科技
成都仁贤领冠互联网科技有限公司
中国互联网公司排名锤子科技
工业互联网展湾科技股份有限公司
伍佰万互联网科技是干嘛的