贪吃蛇游戏的说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

贪吃蛇游戏说明

一、游戏简介

主要功能:

(1)通过游戏设置的等级设置进入游戏,在游戏过程中可以选择速度快慢程度来选择游戏的难易度。

(2)可以选择有边界阻碍和无边界阻碍的。

界面功能:

(3)游戏的的窗口菜单是自定义的,简单设计了几个菜单项,方便选择开始游戏,离开游戏,速度快慢,有无边界。

(4)在游戏界面的右下方有一个显示当前的得分情况,方便便用户来了解自己的战绩。

操作功能:

其中游戏的主操作键是↓↑→←。不仅可以通过菜单来进行操作,还可以通过快捷键开操作(crtrl+N --- New Game,ctrl+Q--- Exit)

二、实现步骤

1、设置30×40的界面和颜色,设置控制台窗口标题,然后自定

义菜单

2、设置一些主要的功能,游戏的开始,离开,难易度和有无墙

壁(代码参考)

3、设置蛇和豆子的位置大小和颜色

4、在设置时考虑蛇移动的方向,通过在蛇头没有撞到自身和边

界的前提下,判断蛇是否吃到食物,若吃到了食物,则需要

将吃到的食物作为蛇头,否则需要在原来蛇头的下一个坐标

作为蛇头,而蛇尾需要被去除,同时加分。

三、游戏截图

(无墙壁)

(有墙壁)

四、代码(其中标记的地方是参考的)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',...

'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'')))',mf ilename));

FileMenu = uimenu(f,'Label','&File');

uimenu(FileMenu,'Label','New

Game','Accelerator','N','Callback',sprintf('%s(''NewGame'')',mfilenam e));

uimenu(FileMenu,'Label','Exit','Accelerator','Q','Separator','on','Ca llback',sprintf('%s(''Stop'');closereq',mfilename));

LevelMenu = uimenu(f,'Label','&Level');

uimenu(LevelMenu,'Label','1','Callback',sprintf('%s(''Level'')',mfile name))

uimenu(LevelMenu,'Label','2','Callback',sprintf('%s(''Level'')',mfile name))

uimenu(LevelMenu,'Label','3','Callback',sprintf('%s(''Level'')',mfile name))

uimenu(LevelMenu,'Label','4','Callback',sprintf('%s(''Level'')',mfile name),'checked','on')

uimenu(LevelMenu,'Label','5','Callback',sprintf('%s(''Level'')',mfile name))

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'')',mfil ename))

% Create The axes

axes('Units','normalized',...

'Position', [0 0 1 1],...

'Visible','off',...

'DrawMode','fast',...

'NextPlot','replace');

% Add the board

BOARD = image(getTitle,'CDataMapping','scaled');

axis image

set(gca,...

'XTick',NaN,...

'YTick',NaN)

text(40,30,'0',...

'FontUnits','normalized', ...

'FontSize',0.03, ...

'FontName','FixedWidth',...

'FontWeight','bold',...

'Color',[1 1 1],...

'VerticalAlignment','baseline', ...

'HorizontalAlignment','right',...

'Tag','Score');

SNAKE = [14,20;14,19;14,18;14,17;14,16];

WALL = zeros(30,40);

LEVEL = 4;

case 28 % left

if SNAKE(2,2)~=mod(SNAKE(1,2)-2,40)+1

DIRECTION = cmd;

end

case 29 % right

if SNAKE(2,2)~=mod(SNAKE(1,2),40)+1

DIRECTION = cmd;

end

case 30 % up

if SNAKE(2,1)~=mod(SNAKE(1,1)-2,30)+1

相关文档
最新文档