function snake(cmd) global SNAKE WALL LEVEL BOARD DIRECTION RUNNING FOOD BONUS PAUSE if ~ nargin cmd = 'init'; end if ~ (ischar(cmd)||isscalar(cmd)) return; end switch cmd case 'init' scrsz = get(0,'ScreenSize'); f = figure('Name','Snake',... %显示图形窗口的标题 'Numbertitle','off',... %标题栏中是否显示’Figure No. n’,其中n为图形窗口的编号 'Menubar','none',... %转换图形窗口菜单条的“关” 'Color',[.95 .95 .95],... 'DoubleBuffer','on',... 'Position',[(scrsz(3)-400)/2 (scrsz(4)-300)/2 400 300],... 'Colormap',[.1 .71 0;.3 .4 .4;0 0 0;1 1 0],... 'CloseRequestFcn',sprintf('%s(''Stop'');closereq;',mfilename),... 'KeyPressFcn',sprintf('%s(double(get(gcbf,''Currentcharacter'')))',mfilename)); %当在图形窗口中按下一键时,定义一回调程序 %建菜单 FileMenu = uimenu(f,'Label','&File'); uimenu(FileMenu,'Label','New Game','Accelerator','N','Callback',sprintf('%s(''NewGame'')',mfilename)); uimenu(FileMenu,'Label','Exit','Accelerator','Q','Separator','on','Callback',sprintf('%s(''Stop'');closereq',mfilename)); LevelMenu = uimenu(f,'Label','&Level'); uimenu(LevelMenu,'Label','1','Callback',sprintf('%s(''Level'')',mfilename)) uimenu(LevelMenu,'Label','2','Callback',sprintf('%s(''Level'')',mfilename)) uimenu(LevelMenu,'Label','3','Callback',sprintf('%s(''Level'')',mfilename)) uimenu(LevelMenu,'Label','4','Callback',sprintf('%s(''Level'')',mfilename),'checked','on') uimenu(LevelMenu,'Label','5','Callback',sprintf('%s(''Level'')',mfilename)) WallMenu = uimenu(f,'Label','&Wall'); uimenu(WallMenu,'Label','No wall','Callback',sprintf('%s(''Wall'')',mfilename),'checked','on') uimenu(WallMenu,'Label','Wall','Callback',sprintf('%s(''Wall'')',mfilename)) % Create The axes axes('Units','normalized',... 'Position', [0 0 1 1],... 'Visible','off',... 'DrawMode','fast',... 'NextPlot','replace');%清除图形轴中全部的子对象,并将轴的对象属性设置为系统的默认数值 % Add the board BOARD = image(getTitle,'CD...