贪吃蛇设计说明书.docx

上传人:b****7 文档编号:9806556 上传时间:2023-02-06 格式:DOCX 页数:41 大小:1.24MB
下载 相关 举报
贪吃蛇设计说明书.docx_第1页
第1页 / 共41页
贪吃蛇设计说明书.docx_第2页
第2页 / 共41页
贪吃蛇设计说明书.docx_第3页
第3页 / 共41页
贪吃蛇设计说明书.docx_第4页
第4页 / 共41页
贪吃蛇设计说明书.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

贪吃蛇设计说明书.docx

《贪吃蛇设计说明书.docx》由会员分享,可在线阅读,更多相关《贪吃蛇设计说明书.docx(41页珍藏版)》请在冰豆网上搜索。

贪吃蛇设计说明书.docx

贪吃蛇设计说明书

贪吃蛇设计说明书

 

摘要

 

本贪吃蛇(Snake)游戏仿照以往的贪吃蛇游戏,尽管在图形界面方面存在一定的缺陷,但能够基本实现游戏的功能。

本游戏分为10个级别,玩家通过方向键对蛇的运动进行控制,如果蛇吃到食物,得分加10分,并且到一定的程度级别会上升。

此外,用户可以根据需要选择速度、界面以及播放的音乐,并且在游戏中保存了以往前三名玩家的记录,供玩家参考。

 

关键字:

主页面,快捷键,方向键,解决方案

 

目录

第一章:

ATM系统概述

1.1系统的主要任务

1.2基本要求

1.3主要功能

1.4设计方法及涉及知识点

1.4.1设计方法

1.4.2涉及知识点

1.5系统开发的目的

 

第二章:

系统分析

2.1分析问题和定义类,给出类的定义和联系,

2.2系统开发平台的选择

2.3程序设计语言的选择

2.4操作平台

 

第三章:

总体设计

3.1系统的结构图(总图)

3.2函数模块说明(每个函数的原型、功能说明)

3.3系统运行界面截图

 

第四章:

系统评价

4.1系统的特点

4.2系统的缺点

4.3将来可能提出的要求

 

第五章:

小结

 

第六章:

参考文献

 

第一章ATM系统概述

1.系统的主要任务

本游戏主要提供给玩家进行娱乐。

2.基本要求

1.要求利用面向对象的方法以及C#程序设计语言来完成该系统的设计;

2.要求在设计的过程中,建立清晰的类的层次;

3.在系统中建立相关的类,每个类中都要有各自的属性和方法;

4.程序运行结果正确,操作方面,界面美观,逻辑层次清楚,程序结构合理,文档规范清晰。

3.主要功能

该系统具备以下功能:

控制蛇运动方向:

用键盘上的↑、↓、←、→控制蛇的运动方向。

当蛇向一个方向运动时,它的反向键被锁定。

不能通过连续按住某个方向键而加快蛇的运动。

若在游戏中,蛇头碰了墙或是自己的身体,则游戏结束。

蛇吃食物:

蛇每吃一个食物增长一节,并且得分加10分,总共为100节。

蛇每增长10节游戏上升一个级别。

游戏结束:

如果在游戏过程中,蛇头碰墙或是碰到了自己的身体,则游戏结束。

如果在游戏过程中,用户选择退出游戏,则提醒用户游戏正在进行,是否要退出。

选择退出,则游戏结束。

选择取消,则游戏继续。

如果玩家成功过关,则游戏结束。

在上述任何一种情况下,系统都会询问用户:

是否保存游戏成绩?

选择确定,如果姓名为空,则默认以“匿名玩家”记录。

选择取消,则不记录。

开始:

开始游戏

暂停:

暂停游戏

退出:

退出游戏

速度:

玩家可以通过:

选项->速度打开窗口。

系统默认的方式是变速游戏。

玩家可以自行选择变速游戏或是均速游戏。

变速游戏:

速度分1-10个级别。

并且根据关卡的高低决定速度的快慢。

均速游戏:

用户可以自行选择所要速度的快慢。

1表示最慢,10表示最快。

音乐:

当打开游戏界面时,音乐会自动播放,默认的音乐是:

Remeber。

若玩家要修改或关闭音乐,可以通过:

选项->音乐或是F5快捷键打开窗口。

若玩家不想播放音乐,请点击关闭。

若玩家要播放选中的音乐,请点击确定。

界面:

玩家可以根据爱好选择想要的图片,总共有8张背景图片供选择。

玩家选择图片后,可以在对话框的右边预览到图片。

点击确定则显示选中的图片,点击取消则显示原先图片。

当游戏开始后,此功能键不能用。

查看记录:

玩家可以通过:

关于->查看记录或F6快捷键打开窗口。

窗口中显示了以往玩家的前三名成绩。

游戏说明:

玩家可以通过:

关于->游戏说明或F7快捷键打开窗口。

窗口中显示了本游戏的说明。

游戏的快捷键:

开始:

F2

暂停:

F3

退出:

F4

音乐:

F5

查看记录:

F6

游戏说明:

F7

4.设计方法及涉及知识点

4.1设计方法

因为界面的需要,在程序中有很多窗口:

frmStart:

游戏刚开始的窗口

frmGame:

在frmStart窗口中选择“进入游戏”后打开的窗口

frmSpeed:

用户选择速度时打开的窗口

frmMusic:

用户选择音乐时打开的窗口

frmFace:

用户选择界面时打开的窗口

frmScores:

用户查看记录时打开的窗口

frmAboutGame:

用户选择游戏说明时打开的窗口

frmMessage:

当游戏进行时,用户终止游戏出现的窗口

frmGameOver:

在蛇撞墙或是撞到自己身体是打开的窗口

frmGameSuccess:

用户成功结束游戏时打开的窗口

frmSave:

游戏开始后,游戏结束打开的窗口

此外,还创建了其他类:

Food类和Snake类

4.2涉及知识点

此程序涉及的知识点有:

函数的重载

线程的运用

文件的打开、读写和保存

窗口的创建,控件、容器、菜单和工具栏和组建的使用

 

5.系统开发的目的

1.通过开发该自动取款机系统,加强我们对所习的C#知识的理解掌握,理解并且学会使用面向对象的设计思想去设计程序。

2.考察我们的实践动手能力,独立思考能力,自主学习能力,还有通过一系列方法寻求帮助的能力等。

3.通过巩固以往的知识也为后续的课程打下良好的基础。

 

第二章系统分析

1.分析问题和定义类,给出类的定义和联系

玩家打开游戏,首先进入主页面(frmStart窗口),主页面有三个按钮:

进入游戏、退出游戏和关于游戏

进入游戏:

打开frmStart窗口

frmStart窗口:

工具栏分为游戏、选项和关于

游戏:

开始(F2)、暂停或继续(F3)、退出(F4)

开始:

游戏开始

暂停或继续:

游戏暂停或继续

退出:

游戏还没开始:

回到主界面

游戏已经开始:

打开frmMessage窗口:

选择确定:

打开frmSave窗口:

选择确定:

保存后回到主界面

选择取消:

不保存且回到主界面

选择取消:

游戏继续

选项:

速度、音乐(F5)、背景

速度:

打开frmSpeed窗口,玩家选择变速游戏或是均速游戏(此项还要选择速度)

音乐:

打开frmMusic窗口,玩家选择是否播放音乐以及播放的歌曲

背景:

打开frmFace窗口,玩家选择游戏界面的背景图片

关于:

查看记录(F6)、游戏说明(F7)

查看记录:

打开frmScores窗口

游戏说明:

打开frmAboutGame窗口

退出游戏:

程序结束

关于游戏:

打开frmAboutGame窗口

若在游戏过程中:

蛇头碰墙或自己身体:

打开frmGameOver窗口:

打开frmSave窗口:

玩家过关:

打开frmGameSuccess窗口:

打开frmSave窗口

之后回到主页面

此外frmGame中还调用了Snake和Food类,用来画蛇和食物。

2.系统开发平台的选择

此系统是基于MicrosoftVisualStudio2005开发环境开发的。

3.程序设计语言的选择

此系统的设计语言采用面向对象的程序设计语言MicrosoftVisualC#2.0。

4.操作平台

硬件条件:

IntelPIICPU、256RAM、20G硬盘以上的PC机 

软件条件:

Windows98以上操作系统

第三章总体设计

1.系统的结构图(总图)

系统用例图:

系统类图:

 

系统流程图:

2.函数模块说明

frmStart:

publicpartialclassfrmStart:

Form

{

frmGamegame;

frmAboutGameaboutGame;

publicfrmStart()

{

InitializeComponent();

}

privatevoidbtnGoToGame_Click(objectsender,EventArgse)

{

game=newfrmGame();

frmGame.start=true;

game.Show();

}

privatevoidbtnCancel_Click(objectsender,EventArgse)

{

Application.Exit();

}

privatevoidbtnAboutGame_Click(objectsender,EventArgse)

{

aboutGame=newfrmAboutGame();

aboutGame.Show();

}

}

 

frmGame:

publicpartialclassfrmGame:

Form

{

[DllImport("winmm.dll")]

publicstaticexternuintmciSendString(stringlpstrCommand,stringlpstrReturnString,uintuReturnLength,uinthWndCallback);

//用于播放音乐

frmMusicmusic;

frmAboutGameaboutGame;

frmSpeedgameSpeed;

frmFaceface;

frmScoresscores;

frmGameOvergameOver;

frmMessageshowMessage;

frmGameSuccessgameSuccess;

//定义窗口对象

Snakesnake=newSnake();

Foodfood=newFood();

//定义类对象

Graphicsg;

Graphicsg1;

//定义画布对象

Bitmapimg;

TextureBrushtb;

//定义画图要用的的对象

intmax=100;

intspeed=1;

inthurdles=1;

stringpictureName="真实风景1.bmp";

boolchangeSpeed=true;

boolpicture=false;

publicstaticboolstart=true;

publicboollive;//判断蛇是否活着

publicstaticintscore=0;

//定义变量

publicfrmGame()

{

InitializeComponent();

live=false;

timer1.Enabled=false;

timer1.Interval=100;

if(start==true)

{

Snake.snakeDirection=Snake.snakePreDirection=2;

}

}

privatevoidpalMid_Paint(objectsender,PaintEventArgse)

{

g=pnlOut.CreateGraphics();

g1=pnlIn.CreateGraphics();

img=newBitmap("红墙.bmp");

tb=newTextureBrush(img);

g1.FillRectangle(tb,0,0,544,443);

img=newBitmap(pictureName);

tb=newTextureBrush(img);

g.FillRectangle(tb,0,0,500,400);

food.makeFood(g);

snake.draw(g);

if(start==true)

{

mciSendString(@"closetemp_alias",null,0,0);

mciSendString(@"open""Remember.mp3""aliastemp_alias",null,0,0);//不能修改,否则无法播放

mciSendString("playtemp_aliasrepeat",null,0,0);

}

}

privatevoidtimer1_Tick(objectsender,EventArgse)

{

gameOver=newfrmGameOver();

gameSuccess=newfrmGameSuccess();

if(picture==false)//表示刚才没有调过界面,如果没有此判断,则调了界面后会自动开始游戏

{

if(timer1.Enabled==true)

{

live=snake.move(g);

if(changeSpeed==true)//如果是变速游戏

{

speed=snake.number/10+1;//速度

hurdles=snake.number/10+1;//级别

score=(snake.number-1)*10;//分数

timer1.Interval=1000-(hurdles-1)*100;

}

else//速度不变的情况

{

hurdles=snake.number/10+1;

score=(snake.number-1)*10;

timer1.Interval=1000-(speed-1)*100;

}

lblScore2.Text=((snake.number-1)*10).ToString();

lblHurdles2.Text=(snake.number/10+1).ToString();

lblSpeed2.Text=speed.ToString();

}

if(live==false)//蛇死了,撞了墙或是撞了自己的尾巴

{

Snake.snakeDirection=Snake.snakePreDirection=2;

timer1.Enabled=false;//时间停止

gameOver.ShowDialog();

this.Close();

}

elseif(snake.number==max)

{

Snake.snakeDirection=Snake.snakePreDirection=2;

timer1.Enabled=false;//时间停止

gameSuccess.ShowDialog();

this.Close();

}

else//蛇向前运动

{

palMid.Invalidate();

palMid.Update();

}

}

}

protectedoverrideboolProcessCmdKey(refMessagemsg,KeyskeyData)//重载基类方法ProcessCmdKey才能使用方向键

{

if(timer1.Enabled==true)

{

switch(keyData)

{

caseKeys.Up:

if(Snake.snakePreDirection!

=3)

{

Snake.snakeDirection=1;

}

break;

caseKeys.Right:

if(Snake.snakePreDirection!

=4)

{

Snake.snakeDirection=2;

}

break;

caseKeys.Down:

if(Snake.snakePreDirection!

=1)

{

Snake.snakeDirection=3;

}

break;

caseKeys.Left:

if(Snake.snakePreDirection!

=2)

{

Snake.snakeDirection=4;

}

break;

}

if(Snake.snakePreDirection!

=Snake.snakeDirection)

{

snake.move(g);

palMid.Invalidate();

palMid.Update();

Snake.snakePreDirection=Snake.snakeDirection;

}

}

switch(keyData)

{

caseKeys.F2:

if(开始ToolStripMenuItem.Enabled==true)

{

开始ToolStripMenuItem.PerformClick();

}

break;

caseKeys.F3:

暂停ToolStripMenuItem.PerformClick();

break;

caseKeys.F4:

退出ToolStripMenuItem.PerformClick();

break;

caseKeys.F5:

音乐ToolStripMenuItem.PerformClick();

break;

caseKeys.F6:

查看记录ToolStripMenuItem.PerformClick();

break;

caseKeys.F7:

游戏说明ToolStripMenuItem.PerformClick();

break;

}

returntrue;

}

privatevoid开始ToolStripMenuItem_Click(objectsender,EventArgse)

{

live=true;

start=false;

timer1.Enabled=true;

picture=false;//使能够调用Timer1_Tick

暂停ToolStripMenuItem.Enabled=true;

开始ToolStripMenuItem.Enabled=false;//点击开始按钮后,开始、速度、界面按钮为不可用

速度ToolStripMenuItem.Enabled=false;

界面ToolStripMenuItem.Enabled=false;

}

privatevoid暂停ToolStripMenuItem_Click(objectsender,EventArgse)

{

if(timer1.Enabled==true)

{

timer1.Enabled=false;

暂停ToolStripMenuItem.Text="继续";

}

else

{

timer1.Enabled=true;

暂停ToolStripMenuItem.Text="暂停";

}

}

privatevoid退出ToolStripMenuItem_Click(objectsender,EventArgse)

{

showMessage=newfrmMessage();

timer1.Enabled=false;

if(live==true)//游戏已经开始了

{

showMessage.ShowDialog();

showMessage.Close();

if(showMessage.getResult())

{

timer1.Enabled=true;

}

else

{

this.Close();

}

}

else

{

Snake.snakeDirection=Snake.snakePreDirection=2;

this.Close();

}

}

privatevoid速度ToolStripMenuItem_Click(objectsender,EventArgse)

{

gameSpeed=newfrmSpeed();

gameSpeed.ShowDialog();

speed=gameSpeed.speed;

changeSpeed=gameSpeed.changeSpeed;

palMid.Invalidate();

palMid.Update();

}

privatevoid音乐ToolStripMenuItem_Click(objectsender,EventArgse)

//根据玩家选择播放音乐

{

music=newfrmMusic();

stringpath="";

mciSendString(@"closetemp_alias",null,0,0);

music.ShowDialog();

stringmusicName=music.getMusicName();

if(musicName!

="")

{

musicName=music.getMusicName();

path="open"+musicName+"aliastemp_alias";

}

mciSendString(@path,null,0,0);//不能修改,否则无法播放

mciSendString("playtemp_aliasrepeat",null,0,0);

palMid.Invalidate();

palMid.Update();

}

privatevoid界面ToolStripMenuItem_Click(objectsender,EventArgse)

//玩家可以自己选择图片

{

face=newfrmFace();

face.ShowDialog();

pictureName=face.name;

timer1.Enabled=true;

picture=true;//保证不调用Timer1_Tick

palMid.Invalidate();

palMid.Update();

}

privatevoid查看记录ToolStripMenuItem_Click(objectsender,EventArgse)

{

scores=newfrmScores();

scores.ShowDialog();

palMid.Invalidate();

palMid.Update();

}

privatevoid游戏说明ToolStripMenuItem_Click(objectsender,EventArgse)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1