matlab GUI课程设计——扫雷游戏

这篇具有很好参考价值的文章主要介绍了matlab GUI课程设计——扫雷游戏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


课程设计

平台:matlab GUIDE

功能实现:扫雷游戏

目的:

1.熟悉matlab基本的代码编写能力;
2.学会利用matlab GUI设计图形交互界面,方便使用者操作;

演示:

1.创建15行×20列的扫雷界面,界面上包括棋子数量统计和炸弹数量设置.炸弹数量越多,扫雷难度越大.
matlab扫雷代码,matlab GUIDE,matlab,游戏,开发语言
2. 正常扫雷演示:
matlab扫雷代码,matlab GUIDE,matlab,游戏,开发语言
3. 点击到炸弹后,弹出对话框,可选择关闭程序或者重新开始.
matlab扫雷代码,matlab GUIDE,matlab,游戏,开发语言

代码示例:

每个按钮被点击后执行的回调函数:

function pushcallback(hObject, eventdata, handles)
global row col mines times flags mine control around  Tags Bombs
a = get(hObject,'position');
hang=double((a(2)-0.86)/(-0.054))-0.0001;
lie=double((a(1)-0.013)/0.045)-0.0001;
place=ceil([hang,lie]);
if times==1
    mines=str2num(get(handles.edit1,'string'));
    set(handles.edit1,'enable','off')
    first_time(hObject, eventdata, handles,place)
    times=0;
end
%如果点到了炸弹
if mine(place(1),place(2))==1&&~isequal(get(hObject,'CData'),Tags)
    [p,q]=find(mine==1);
    bombs=p+row*(q-1);
    set(handles.h(bombs),'CData',Bombs,'ForegroundColor','k','backgroundcolor',0.85*[1,1,1]);
    set(hObject,'CData',imread('爆炸圆.png'),'ForegroundColor','k','backgroundcolor',0.85*[1,1,1]);
    buttonName2=questdlg('很遗憾,你输了','游戏结束','close','restart','close');
    if isempty(buttonName2)
       close;
       return
    end
    if strcmp(buttonName2,'restart')
        set(handles.edit1,'enable','on')
        set(handles.text1,'string','标记:')
        mines=35;%炸弹总数
        times=1;
        flags=0;
        for m=1:row
            for n=1:col
                set(handles.h(m,n),'style','pushbutton','foregroundColor',0.7*[1 1 1],...
                    'BackgroundColor',0.7*[1 1 1],'CData',[]);
            end
        end
        mine=zeros(row,col);
        control=ones(row,col);
        around=zeros(row,col);
           return
    else
        if strcmp(buttonName2,'close')
            close;
            return
        end
    end
end
%如果点到的不是炸弹,但是其九宫格内有炸弹的话,只翻当前点击的该格子
if (mine(place(1),place(2))==0)&&(around(place(1),place(2))~=0)&&~isequal(get(hObject,'CData'),Tags)
    drawnum(hObject, eventdata, handles,place)
end
%如果点到的不是炸弹,而且其九宫格内也没有炸弹的话,就随机扩展当前点击的格子周边的连接的不是炸弹的多个格子
if (mine(place(1),place(2))==0)&&(around(place(1),place(2))==0)&&~isequal(get(hObject,'CData'),Tags)
    begins=place;
    [whitea,whiteb]=find(around==0);
    white=[whitea,whiteb];
    next=[begins;begins+[1,0];begins+[-1,0];begins+[0,1];begins+[0,-1]];
    while ~isempty(intersect(white,next,'rows'))
        [a,b,~]=intersect(white,next,'rows');
        begins=[a;begins];
        white(b,:)=[];
        ad=length(sum(begins,2));
        next=[begins;begins+ones(ad,1)*[1,0];begins+ones(ad,1)*[-1,0];begins+ones(ad,1)*[0,1];begins+ones(ad,1)*[0,-1]];
    end
    drawbegins=begins(:,1)+row*(begins(:,2)-ones(ad,1));
    set(handles.h(drawbegins),'style','text','string','','backgroundcolor',0.85*[1,1,1]);
    control(drawbegins)=0;
    colors=[begins;begins+ones(ad,1)*[1,0];begins+ones(ad,1)*[-1,0];begins+ones(ad,1)*[0,1];begins+ones(ad,1)*[0,-1];
        begins+ones(ad,1)*[1,1];begins+ones(ad,1)*[1,-1];begins+ones(ad,1)*[-1,1];begins+ones(ad,1)*[-1,-1]];
    colors=unique(colors,'rows');
    [txa,txb]=find(around~=0);
    tx=[txa,txb];
    txcolors=intersect(tx,colors,'rows');
    for i=1:length(sum(txcolors,2))
        drawnum(handles.h(txcolors(i,1),txcolors(i,2)),eventdata, handles,txcolors(i,1:2))
    end
end
guidata(hObject, handles);

欢迎交流

代码事宜,私信博主文章来源地址https://www.toymoban.com/news/detail-521062.html

到了这里,关于matlab GUI课程设计——扫雷游戏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 教你使用Java开发一款简单的扫雷小游戏 附实例代码

    相信很多小伙伴都知道也玩过扫雷游戏,本篇文章将和大家分享一篇关于如何使用Java来实现一款简单的扫雷小游戏,这有助于大家对于Java相关知识的学习有一定的参考价值,下面是详情内容。 学了几周的Java,闲来无事,写个乞丐版的扫雷,加强一下Java基础知识。 编写这个

    2024年02月08日
    浏览(31)
  • 基于C#开发五子棋游戏 大作业 课程设计源码

    基于C#开发五子棋游戏(大作业/课程设计) 开发环境:  Windows操作系统 开发工具: Microsoft Visual Studio 运行效果图:    基于C#开发五子棋游戏(大作业/课程设计) 开发环境:  Windows操作系统 开发工具:Microsoft Visual Studio 基于C#开发五子棋游戏(大作业/课程设计) 开发环境

    2024年02月04日
    浏览(31)
  • 【C语言】扫雷游戏完整代码实现

    目录 1.game.h 2.game.c 3.progress.c 4.运行结果

    2024年02月21日
    浏览(33)
  • Matlab:使用 GUIDE 设计 UI 界面并设置窗口大小

    Matlab:使用 GUIDE 设计 UI 界面并设置窗口大小 Matlab 的 GUIDE 工具箱是一个非常强大而灵活的工具,可以方便地创建自定义的用户界面。在设计 UI 界面时,首先要考虑的是界面的大小和布局。本文将介绍如何在 GUIDE 中设置 UI 窗口大小。 创建新的 GUI 首先,在 Matlab 中打开 GUID

    2024年02月11日
    浏览(24)
  • python小游戏毕设 扫雷小游戏设计与实现

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 python小游戏毕设 扫雷小游戏设计与实现 (源码) 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:4分 《扫雷》是一款大

    2024年02月04日
    浏览(40)
  • python小游戏毕设 扫雷小游戏设计与实现 (源码)

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 python小游戏毕设 扫雷小游戏设计与实现 (源码) 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:4分 项目获取: https:

    2024年02月06日
    浏览(26)
  • C语言小项目 -- 扫雷游戏完整代码(递归展开 + 选择标记)

    大家好,今天我们将一起用C语言实现一个经典小游戏 – 扫雷,Let is go ! 扫雷游戏相信大家都玩过,上图就是一个网页版的扫雷,它的规则是玩家选择一个方格,若此方格没有地雷,那么该方格会显示与它相邻的八个方格中雷的个数,若此方格有地雷,那么游戏失败,当玩

    2024年02月05日
    浏览(42)
  • python项目分享 - 扫雷小游戏设计与实现 (源码)

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 python小游戏毕设 扫雷小游戏设计与实现 (源码) 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:4分 项目获取: https:

    2024年02月19日
    浏览(37)
  • python项目分享 扫雷小游戏设计与实现 (源码)

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 python小游戏毕设 扫雷小游戏设计与实现 (源码) 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:4分 项目获取: https:

    2024年01月19日
    浏览(43)
  • web小游戏开发:扫雷(三)(完成度90%)

    书接前文啊,如果没看过前两篇的话,不好理解这里的定义了哦。 在之前两篇文章,我们已经把雷区布置好了,全部盖上了格子,现在我们需要把雷布出来,这就需要用一个二维数组来存放雷区每个格子的状态,以及另一个存放地雷和数字描述的二维数组了,用两个二维数组

    2023年04月18日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包