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实现扫雷小游戏相关推荐

  1. 如何利用C#开发“扫雷”小游戏

    本文详细说明了利用C#语言开发"扫雷"小游戏的开发过程.

  2. 用C语言实现扫雷小游戏(附上思路+项目展示+源代码)

    文章目录 前言 一.扫雷小游戏整体思路讲解. 二.game.c各游戏功能函数的讲解 1.InitBoard 初始化数组函数讲解 2.DisplayBoard 打印格子函数讲解 3.Setmine 电脑 ...

  3. C语言编写扫雷小游戏

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/104992377 扫 ...

  4. 也分享自己做的JS扫雷小游戏

    看了草根程序猿分享的JS扫雷小游戏 想起去年的时候自己也做了一个 于是也拿出来分享之 先上截图~ 引用了jQuery,节省了很多鼠标点击上的判断 界面显然都是照搬Windows的扫雷啦 详细的内容注释 ...

  5. 使用C语言写一个扫雷小游戏

    前言 相信扫雷游戏小伙伴们肯定都玩过吧,学习了C语言中的数组.函数等基础内容之后就可以自己写一个简易的扫雷小游戏了,今天就我写扫雷小游戏的过程及思路写一篇博客,希望大家看完我的博客能有所收获. 软件及 ...

  6. 如何开发一个扫雷小游戏?

    如何用C#开发一个扫雷小游戏? 十分自豪的说,计算机编程就是变魔术,每一个coder都是一个魔术师. 初学C#的时候,我相信很多人都和我一样,学会了基本语法,掌握了基本的数据结构,也见过了不少微软提供 ...

  7. rust游戏亮度怎么调亮点_之前用Rust写的扫雷小游戏

    这次来分享一下之前用Rust写的一个扫雷小游戏,目前能在Windows下运行.Github仓库: https://github.com/crlf0710/charlesmine-rs​github.c ...

  8. 用C语言实现一个简单的扫雷小游戏(附全代码及教程)

    本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下: 首先,创建一个text.c文件: 编写主函数: int main() {test();return 0; } 定义test ...

  9. C语言实现扫雷小游戏 纯小白 非黑窗口

    C语言实现一个普通的扫雷小游戏 纯小白所编(含代码非黑窗口!) 扫雷 主要功能 1.创建一个图形界面 2.了解扫雷游戏的原理 3.随机生成雷的位置 4.为整个数组加密,并在雷周围的位置加一 5.导入图 ...

  10. C/C++语言扫雷小游戏(eaxyX图形库的应用)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.扫雷的玩法,以及实现功能介绍 二.代码实现 1.引入库 2.宏定义部分 3.初始化游戏界面 4.加载图片 5.绘制 ...

最新文章

  1. 【PyTorch学习笔记】4:在Tensor上的索引和切片
  2. 面试官:你说熟悉MySQL事务,那来谈谈事务的实现原理吧!
  3. wukong引擎源码分析之索引——part 1 倒排列表本质是有序数组存储
  4. 干货 | DevSecOps在携程的最佳实践
  5. jx problem
  6. boost::math::find_location用法的测试程序
  7. java并发编程之4——Java锁分解锁分段技术
  8. Logtail 混合模式:使用插件处理文件日志
  9. Linux 配置虚拟IP
  10. 转载:IEEE1588 ( PTP ) 协议简介
  11. UART 协议以及概念
  12. 瑞幸咖啡,成败今年见分晓!
  13. 百度天眼android,百度天眼下载|百度天眼安卓版 v1.2.0.20423_手机天堂
  14. c语言瑞年条件,C语言如何判断是闰年,闰年判断条件
  15. matlab绘制s域零极点分布图,《信号与系统》第五章 连续系统的s域分析.ppt
  16. Spark之任务流程和角色
  17. 新建银行账户类,实现基本的属性和方法。
  18. kafka java实战_Kafka KSQL实战 PDF 下载
  19. 嵌入式linux启动时间优化
  20. 使用clion搭建CUDA开发环境

热门文章

  1. oracle自动清理归档,Oracle rman 自动清理归档日志
  2. PowerPoint超链接字体颜色修改、怎么去掉超链接下划线
  3. 设计手机APP界面的感想
  4. bugku秋名山老司机之使用requsets解题
  5. 数量遗传学 第二章 群体的遗传组成
  6. BZOJ5287 HNOI2018毒瘤
  7. php 容器源码分析,Pimple运行流程浅析(PHP容器)
  8. 微信企业号开发—发送消息
  9. MAC清除Launchpad 应用程序 图标
  10. 计算机中寄存器的定义,寄存器,寄存器是什么意思