扫雷作为经典小游戏伴随了很多人的成长,今天给大家介绍一个MATLAB版本制作的扫雷游戏。

该游戏由游戏和帮助两个主菜单帮助文档告诉玩家如何去玩如下图所示

在游戏菜单里包含:开始,低、中、高、自定义以及退出按钮。

游戏的低中高级是根据扫雷宽度决定的,用户也可以自定义扫雷的行列数。

由于代码较多故在此显示部分代码,

function  varargout = Game_NewClearMine( varargin )

if nargin == 0

OldHandle = findobj( 'Type', 'figure', 'Tag', 'NewClearMine' ) ;

if ishandle( OldHandle )

close( OldHandle ) ;

FigureHandle = figure('Visible', 'off') ;

init_FigureContent( FigureHandle ) ;

elseif ischar( varargin{1} )

if nargout > 0

[varargout{1:nargout}] = feval(varargin{:}) ;

feval(varargin{:}) ;

function generate_FigureContent( FigureHandle, ButtonNumber ) ;

TabSpace = 10 ;

MidSpace = 1 ;

ButtonColNumber = ButtonNumber(2) ;

ButtonRowNumber = ButtonNumber(1) ;

TextHeight = 25 ;

FigureWidth = ButtonColNumber * (21 + MidSpace) + TabSpace * 4 ;

FigureHeight = ButtonRowNumber * (21 + MidSpace) + TabSpace * 5 + TextHeight ;

set( FigureHandle, 'Position', [100, 100, FigureWidth, FigureHeight], 'Menubar', 'none',...

'Visible', 'off', 'Name', '扫雷',  'Tag', 'NewClearMine', 'NumberTitle', 'off',...

'DoubleBuffer', 'on', 'Units', 'pixel', 'Color', [0.85 0.85 0.85], 'Resize', 'off',...

'KeyPressFcn', 'Game_NewClearMine(''Keypress_fcn'', gcbf)' ) ;

AxesHandle = axes( 'Position', [0, 0, 1, 1], 'Units', 'pixel', 'Tag', 'MainAxes',...

'XLim', [0, FigureWidth], 'YLim', [0, FigureHeight], 'Visible', 'off' ) ;

LineXArray = [TabSpace, FigureWidth-TabSpace, FigureWidth-TabSpace, TabSpace, TabSpace] ;

LineYArray = [TabSpace, TabSpace, FigureHeight-TabSpace, FigureHeight-TabSpace, TabSpace] ;

line( LineXArray, LineYArray, 'Color', 'k' , 'Tag', 'MainFrame') ;

MenuHandle = uimenu( FigureHandle, 'Label', '游戏', 'Tag', 'MainMenu' ) ;

SubMenuTag = {'Begin', 'Easy', 'Normal', 'Hard', 'Custom', 'Exit' } ;

SubMenuString = {'开始(&B)', '低级(&E)', '中级(&N)', '高级(&H)', '自定义(&C)', '退出(&Q)'};

SubMenuCallback = {'Game_NewClearMine( ''BeginMenu_Callback'', gcbo)',...

'Game_NewClearMine( ''EasyMenu_Callback'', gcbo)',...

'Game_NewClearMine( ''NormalMenu_Callback'', gcbo)',...

'Game_NewClearMine( ''HardMenu_Callback'', gcbo)' ,...

'Game_NewClearMine( ''CustomMenu_Callback'', gcbo)',...

'close(gcf)'} ;

SubMenuSeparator = {'off', 'on', 'off','off','off','on'} ;

本公众号属于个体公众号没有什么收益来维护运营,请支持的朋友们多点击一下文章底端广告,谢谢大家!在学习中得到乐趣,在乐趣中收获学习,欢迎关注和分享该公众号。获取本游戏在公众号回复关键字【扫雷】即可,本次代码已上传qq群。如果您有什么建议可以公众号直接回复即可,期待您的加入,也希望您分享给您身边有需要的人。