怎么用Matlab编写简易版连连看小游戏
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要介绍"怎么用Matlab编写简易版连连看小游戏",在日常操作中,相信很多人在怎么用Matlab编写简易版连连看小游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家
千家信息网最后更新 2025年11月13日怎么用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安全错误
数据库的锁怎样保障安全
安防软件开发入门
国企网络安全管理制度
农信社软件开发岗考试
人人通网络安全答案济南
网络安全主题征文分享
山东服务器机柜公司
天津信息化软件开发设施参考价格
未落实网络安全责任制
甘肃正规软件开发培训学校
db2更改数据库字段类型
软件开发公司的提成制度
创建简易的mysql数据库
广西企业软件开发商
物联网网络安全的新动向是
网络安全女生队口号
做软件开发笔记本电脑推荐
网络技术能报考二建吗
服务器在家可以远程吗
男孩学习网络技术有前途吗
服务器管理公司
软件开发对话图
网络安全协会规划
手机登录时服务器错误是咋回事
服务器驱动怎么装
数据库中表的列叫什么
网易我的世界勇者大陆服务器
派出所签订网络安全责任书
广德进口软件开发服务是什么
农行甘肃分行招软件开发岗
信息安全工程网络安全的大盘