matlab实现扫雷小游戏
matlab实现扫雷小游戏
主语:
clear all;
row=10;
col=10;
num=30;
jieshu=0;
%global flag;
flag=zeros(row,col);
%生成0矩阵
flag1=ones(row,col);
%生成1矩阵
minenum=zeros(row,col);
%生成0矩阵
minefield=rand(row,col);
%生成随机矩阵
[temp,index]=sort(minefield(:));
minefield=(minefield<=minefield(index(num)));
%生成地雷矩阵
count=0;
for i=1:rowfor j=1:colx1=i-1;y1=j-1;x2=i-1;y2=j;x3=i-1;y3=j+1;x4=i; y4=j-1;x5=i; y5=j+1;x6=i+1;y6=j-1;x7=i+1;y7=j;x8=i+1;y8=j+1;
%对周围八个方格进行坐标表示if x1>0&&y1>0if minefield(x1,y1)==1count=count+1;endendif x2>1if minefield(x2,y2)==1count=count+1;endendif x3>0&&y3<11if minefield(x3,y3)==1count=count+1;endendif y4>0if minefield(x4,y4)==1count=count+1;endendif y5<11if minefield(x5,y5)==1count=count+1;endendif x6<11&&y6>0if minefield(x6,y6)==1count=count+1;endendif x7<11if minefield(x7,y7)==1count=count+1;endendif x8<11&&y8<11if minefield(x8,y8)==1count=count+1;endendminenum(i,j)=count;count=0;end
end
%对整个10x10的方格的边界情况进行分类处理
hf=figure('NumberTitle','off','Name','扫雷','menubar','none');
uh1=uimenu('label','游戏');
uimenu(uh1,'label','背景颜色选择','callback','c=uisetcolor([0 0 1],''选择颜色'');set(hf,''color'',c);');
uh2=uimenu('label','帮助');
uimenu(uh2,'label','游戏规则','callback',['text(-0.05,0,''与WINDOWS自带的扫雷不同的是:雷用黑色标记,右击用红色代表小红旗'',''fontsize'',12,''fontname'',''????'');',...'hold on; text(-0.12,-0.07,''输了后会有音乐和语言提示,赢了后,会有语音提示!'',''fontsize'',12,''fontname'',''宋体'') ; axis off ']);
uimenu(uh2,'label','制作信息','callback','msgbox(''copyright:Aining '')');
%菜单设计和背景颜色设计
for m=1:row;for n=1:col;h(m,n)=uicontrol(gcf,'style','push',...'foregroundColor',0.7*[1,1,1],...'string',strcat(num2str(m),num2str(n)),...'unit','normalized','position',[0.16+0.053*n,0.9-0.073*m,0.05,0.07],...'BackgroundColor',0.7*[1,1,1],'fontsize',17,...'fontname','times new roman',...'ButtonDownFcn',['if isequal(get(gcf,''SelectionType''),''alt'')',...' if ~get(gco,''Value'') if isequal(get(gco,''Tag''),''y'') ',...'set(gco,''style'',''push'',''string'','''',''backgroundcolor'',0.7*[1 1 1]);',...'set(gco,''Tag'',''n''); else set(gco,''style'',''text'',''string'','''',''backgroundcolor'',[1 0 0]);',...'set(gco,''Tag'',''y'');end;end;end'],...'Callback',['h1=gcbo;[mf,nf]=find(h==h1);search(mf,nf,minenum,h,minefield,flag,jieshu);'...'for i=1:10 for j=1:10 hcomp(i,j)=get(h(i,j),''value''); end;end;comp=(~hcomp==minefield);',...'if all(comp(:)) mh=msgbox(''你好厉害哦!!'',''提示'');sp=actxserver(''SAPI.SpVoice'');sp.Speak(''你好厉害哦!!''); end;']);end
end
%对鼠标操作进行控制与反应
函数如下:
function search(mf,nf,minenum,h,minefield,flag,jieshu)if flag==minefieldmh=msgbox('你好厉害哟!','提示');
end
if minefield(mf,nf)==1set(gco,'style','text','string','','backgroundcolor',[0 0 0]);load handel;sound(y,Fs)pause(4);mh=msgbox('您输了!请再接再厉!','提示');sp=actxserver('SAPI.SpVoice');sp.Speak('您输了!请再接再厉!')pause(2)close all;delete(hf);else
if minenum(mf,nf)==0flag(mf,nf)=1;set(h(mf,nf),'string','');set(h(mf,nf),'value',1);mf1=mf-1;nf1=nf-1;mf2=mf-1;nf2=nf;mf3=mf-1;nf3=nf+1;mf4=mf; nf4=nf-1;mf5=mf; nf5=nf+1;mf6=mf+1;nf6=nf-1;mf7=mf+1;nf7=nf;mf8=mf+1;nf8=nf+1;if mf1>0&&nf1>0 && flag(mf1,nf1)==0flag(mf1,nf1)=1;if minenum(mf1,nf1)==0set(h(mf1,nf1),'style','text','string','','backgroundcolor',[0 0 0]);elseset(h(mf1,nf1),'string',num2str(minenum(mf1,nf1)));set(h(mf1,nf1), 'foregroundColor',0.1*[1,1,1]);set(h(mf1,nf1),'style','text','backgroundcolor',[1 1 1]);endif minenum(mf1,nf1)==0search(mf1,nf1,minenum,h,minefield,flag,jieshu);endset(h(mf1,nf1),'value',1);
end
if mf2>0 && flag(mf2,nf2)==0flag(mf2,nf2)=1;if minenum(mf2,nf2)==0set(h(mf2,nf2),'style','text','string','','backgroundcolor',[0 0 0]);elseset(h(mf2,nf2),'string',num2str(minenum(mf2,nf2)));endset(h(mf2,nf2), 'foregroundColor',0.1*[1,1,1]);set(h(mf2,nf2),'style','text','backgroundcolor',[1 1 1]);if minenum(mf2,nf2)==0search(mf2,nf2,minenum,h,minefield,flag,jieshu);endset(h(mf2,nf2),'value',1);
end
if mf3>0&&nf3<11 && flag(mf3,nf3)==0flag(mf3,nf3)=1;if minenum(mf3,nf3)==0set(h(mf3,nf3),'style','text','string','','backgroundcolor',[0 0 0]);elseset(h(mf3,nf3),'string',num2str(minenum(mf3,nf3)));endset(h(mf3,nf3), 'foregroundColor',0.1*[1,1,1]);set(h(mf3,nf3),'style','text','backgroundcolor',[1 1 1]);if minenum(mf3,nf3)==0search(mf3,nf3,minenum,h,minefield,flag,jieshu);end set(h(mf3,nf3),'value',1);
end
if nf4>0 && flag(mf4,nf4)==0flag(mf4,nf4)=1;if minenum(mf4,nf4)==0set(h(mf4,nf4),'style','text','string','','backgroundcolor',[0 0 0]);elseset(h(mf4,nf4),'string',num2str(minenum(mf4,nf4)));endset(h(mf4,nf4), 'foregroundColor',0.1*[1,1,1]);set(h(mf4,nf4),'style','text','backgroundcolor',[1 1 1]);if minenum(mf4,nf4)==0search(mf4,nf4,minenum,h,minefield,flag,jieshu);end set(h(mf4,nf4),'value',1);
end
if nf5<11 && flag(mf5,nf5)==0flag(mf5,nf5)=1;if minenum(mf5,nf5)==0set(h(mf5,nf5),'style','text','string','','backgroundcolor',[0 0 0]);elseset(h(mf5,nf5),'string',num2str(minenum(mf5,nf5)));endset(h(mf5,nf5), 'foregroundColor',0.1*[1,1,1]);set(h(mf5,nf5),'style','text','backgroundcolor',[1 1 1]);if minenum(mf5,nf5)==0search(mf5,nf5,minenum,h,minefield,flag,jieshu);end set(h(mf5,nf5),'value',1);
end
if mf6<11&&nf6>0 && flag(mf6,nf6)==0flag(mf6,nf6)=1;if minenum(mf6,nf6)==0set(h(mf6,nf6),'style','text','string','','backgroundcolor',[0 0 0]);elseset(h(mf6,nf6),'string',num2str(minenum(mf6,nf6)));endset(h(mf6,nf6), 'foregroundColor',0.1*[1,1,1]);set(h(mf6,nf6),'style','text','backgroundcolor',[1 1 1]);if minenum(mf6,nf6)==0search(mf6,nf6,minenum,h,minefield,flag,jieshu);end set(h(mf6,nf6),'value',1);
end
if mf7<11 && flag(mf7,nf7)==0flag(mf7,nf7)=1;if minenum(mf7,nf7)==0set(h(mf7,nf7),'style','text','string','','backgroundcolor',[0 0 0]);elseset(h(mf7,nf7),'string',num2str(minenum(mf7,nf7))); endset(h(mf7,nf7), 'foregroundColor',0.1*[1,1,1]);set(h(mf7,nf7),'style','text','backgroundcolor',[1 1 1]);if minenum(mf7,nf7)==0search(mf7,nf7,minenum,h,minefield,flag,jieshu);end set(h(mf7,nf7),'value',1);
end
if mf8<11&&nf8<11 && flag(mf8,nf8)==0flag(mf8,nf8)=1;if minenum(mf8,nf8)==0set(h(mf8,nf8),'style','text','string','','backgroundcolor',[0 0 0]);elseset(h(mf8,nf8),'string',num2str(minenum(mf8,nf8)));endset(h(mf8,nf8), 'foregroundColor',0.1*[1,1,1]);set(h(mf8,nf8),'style','text','backgroundcolor',[1 1 1]);if minenum(mf8,nf8)==0search(mf8,nf8,minenum,h,minefield,flag,jieshu);end set(h(mf8,nf8),'value',1);
endelseset(h(mf,nf),'string',num2str(minenum(mf,nf)));
endset(h(mf,nf), 'foregroundColor',0.1*[1,1,1]);set(h(mf,nf),'style','text','backgroundcolor',[1 1 1]); end
end
效果:
matlab实现扫雷小游戏相关推荐
- 如何利用C#开发“扫雷”小游戏
本文详细说明了利用C#语言开发"扫雷"小游戏的开发过程.
- 用C语言实现扫雷小游戏(附上思路+项目展示+源代码)
文章目录 前言 一.扫雷小游戏整体思路讲解. 二.game.c各游戏功能函数的讲解 1.InitBoard 初始化数组函数讲解 2.DisplayBoard 打印格子函数讲解 3.Setmine 电脑 ...
- C语言编写扫雷小游戏
该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/104992377 扫 ...
- 也分享自己做的JS扫雷小游戏
看了草根程序猿分享的JS扫雷小游戏 想起去年的时候自己也做了一个 于是也拿出来分享之 先上截图~ 引用了jQuery,节省了很多鼠标点击上的判断 界面显然都是照搬Windows的扫雷啦 详细的内容注释 ...
- 使用C语言写一个扫雷小游戏
前言 相信扫雷游戏小伙伴们肯定都玩过吧,学习了C语言中的数组.函数等基础内容之后就可以自己写一个简易的扫雷小游戏了,今天就我写扫雷小游戏的过程及思路写一篇博客,希望大家看完我的博客能有所收获. 软件及 ...
- 如何开发一个扫雷小游戏?
如何用C#开发一个扫雷小游戏? 十分自豪的说,计算机编程就是变魔术,每一个coder都是一个魔术师. 初学C#的时候,我相信很多人都和我一样,学会了基本语法,掌握了基本的数据结构,也见过了不少微软提供 ...
- rust游戏亮度怎么调亮点_之前用Rust写的扫雷小游戏
这次来分享一下之前用Rust写的一个扫雷小游戏,目前能在Windows下运行.Github仓库: https://github.com/crlf0710/charlesmine-rsgithub.c ...
- 用C语言实现一个简单的扫雷小游戏(附全代码及教程)
本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下: 首先,创建一个text.c文件: 编写主函数: int main() {test();return 0; } 定义test ...
- C语言实现扫雷小游戏 纯小白 非黑窗口
C语言实现一个普通的扫雷小游戏 纯小白所编(含代码非黑窗口!) 扫雷 主要功能 1.创建一个图形界面 2.了解扫雷游戏的原理 3.随机生成雷的位置 4.为整个数组加密,并在雷周围的位置加一 5.导入图 ...
- C/C++语言扫雷小游戏(eaxyX图形库的应用)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.扫雷的玩法,以及实现功能介绍 二.代码实现 1.引入库 2.宏定义部分 3.初始化游戏界面 4.加载图片 5.绘制 ...
最新文章
- 【PyTorch学习笔记】4:在Tensor上的索引和切片
- 面试官:你说熟悉MySQL事务,那来谈谈事务的实现原理吧!
- wukong引擎源码分析之索引——part 1 倒排列表本质是有序数组存储
- 干货 | DevSecOps在携程的最佳实践
- jx problem
- boost::math::find_location用法的测试程序
- java并发编程之4——Java锁分解锁分段技术
- Logtail 混合模式:使用插件处理文件日志
- Linux 配置虚拟IP
- 转载:IEEE1588 ( PTP ) 协议简介
- UART 协议以及概念
- 瑞幸咖啡,成败今年见分晓!
- 百度天眼android,百度天眼下载|百度天眼安卓版 v1.2.0.20423_手机天堂
- c语言瑞年条件,C语言如何判断是闰年,闰年判断条件
- matlab绘制s域零极点分布图,《信号与系统》第五章 连续系统的s域分析.ppt
- Spark之任务流程和角色
- 新建银行账户类,实现基本的属性和方法。
- kafka java实战_Kafka KSQL实战 PDF 下载
- 嵌入式linux启动时间优化
- 使用clion搭建CUDA开发环境