matlab编写的贪吃蛇游戏
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','fas