《贪吃蛇游戏的设计与实现.docx》由会员分享,可在线阅读,更多相关《贪吃蛇游戏的设计与实现.docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、贪吃蛇游戏的设计与实现 基于C#贪吃蛇游戏的设计与实现 摘要 本贪吃蛇(Snake)游戏仿照以往的贪吃蛇游戏,尽管在图形界面方面存在一定的缺陷,但能够基本实现游戏的功能。 本游戏分为10个级别,玩家通过方向键对蛇的运动进行控制,如果蛇吃到食物,得分加10分,并且到一定的程度级别会上升。此外,用户可以根据需要选择速度、界面以及播放的音乐,并且在游戏中保存了以往前三名玩家的记录,供玩家参考。 关键字:主页面,快捷键,方向键,解决方案 第一章系统概述 1.系统的主要任务 完成课程设计。 2.基本要求 1.要求利用面向对象的方法以及C#程序设计语言来完成该系统的设计; 2.要求在设计的过程中,建立清晰
2、的类的层次; 3.在系统中建立相关的类,每个类中都要有各自的属性和方法; 4.程序运行结果正确,操作方面,界面美观,逻辑层次清楚,程序结构合理,文档规范清 晰。 3.主要功能 该系统具备以下功能: 控制蛇运动方向: 用键盘上的、控制蛇的运动方向。 当蛇向一个方向运动时,它的反向键被锁定。 不能通过连续按住某个方向键而加快蛇的运动。 若在游戏中,蛇头碰了墙或是自己的身体,则游戏结束。 蛇每吃一个食物增长一节,并且得分加10分,总共为100节。 蛇每增长10节游戏上升一个级别。 游戏结束: 如果在游戏过程中,蛇头碰墙或是碰到了自己的身体,则游戏结束。 如果在游戏过程中,用户选择退出游戏,则提醒用户
3、游戏正在进行,是否要退出。 选择退出,则游戏结束。 选择取消,则游戏继续。 如果玩家成功过关,则游戏结束。 在上述任何一种情况下,系统都会询问用户:是否保存游戏成绩? 选择确定,如果姓名为空,则默认以“匿名玩家”记录。 选择取消,则不记录。 开始: 开始游戏 暂停: 暂停游戏 退出: 退出游戏 速度: 玩家可以通过:选项-速度打开窗口。 系统默认的方式是变速游戏。 玩家可以自行选择变速游戏或是均速游戏。 变速游戏:速度分1-10个级别。 并且根据关卡的高低决定速度的快慢。 均速游戏:用户可以自行选择所要速度的快慢。 1表示最慢,10表示最快。 音乐: 当打开游戏界面时,音乐会自动播放,默认的音
4、乐是:Remeber。 若玩家要修改或关闭音乐,可以通过:选项-音乐或是F5快捷键打开窗口。 若玩家不想播放音乐,请点击关闭。 若玩家要播放选中的音乐,请点击确定。 界面: 玩家可以根据爱好选择想要的图片,总共有8张背景图片供选择。 玩家选择图片后,可以在对话框的右边预览到图片。 点击确定则显示选中的图片,点击取消则显示原先图片。 当游戏开始后,此功能键不能用。 查看记录: 玩家可以通过:关于-查看记录或F6快捷键打开窗口。 窗口中显示了以往玩家的前三名成绩。 游戏说明: 玩家可以通过:关于-游戏说明或F7快捷键打开窗口。 窗口中显示了本游戏的说明。 游戏的快捷键: 开始:F2 退出:F4 音
5、乐:F5 查看记录:F6 游戏说明:F7 4.设计方法及涉及知识点 4.1 设计方法 因为界面的需要,在程序中有很多窗口: frmStart:游戏刚开始的窗口 frmGame:在frmStart窗口中选择“进入游戏”后打开的窗口 frmSpeed:用户选择速度时打开的窗口 frmMusic:用户选择音乐时打开的窗口 frmFace:用户选择界面时打开的窗口 frmScores:用户查看记录时打开的窗口 frmAboutGame:用户选择游戏说明时打开的窗口 frmMessage:当游戏进行时,用户终止游戏出现的窗口 frmGameOver:在蛇撞墙或是撞到自己身体是打开的窗口 frmGameS
6、uccess:用户成功结束游戏时打开的窗口 frmSave:游戏开始后,游戏结束打开的窗口 此外,还创建了其他类:Food类和Snake类 4.2 涉及知识点 此程序涉及的知识点有: 函数的重载 线程的运用 文件的打开、读写和保存 窗口的创建,控件、容器、菜单和工具栏和组建的使用 5系统开发的目的 1. 通过开发这个小游戏完成期末课程设计 2. 考察我们的实践动手能力,独立思考能力,自主学习能力,和团队合作能力。还有通过一系列方法寻求帮助的能力等。 3. 通过巩固以往的知识也为后续的课程打下良好的基础。 第二章系统分析 1.分析问题和定义类,给出类的定义和联系 玩家打开游戏,首先进入主页面(f
7、rmStart窗口),主页面有三个按钮:进入游戏、退出游戏和关于游戏 进入游戏:打开frmStart窗口 frmStart窗口:工具栏分为游戏、选项和关于 游戏:开始(F2)、暂停或继续(F3)、退出(F4) 开始:游戏开始 暂停或继续:游戏暂停或继续 退出:游戏还没开始:回到主界面 游戏已经开始:打开frmMessage窗口: 选择确定:打开frmSave窗口: 选择确定:保存后回到主界面 选择取消:不保存且回到主界面 选择取消:游戏继续 选项:速度、音乐(F5)、背景 速度:打开frmSpeed窗口,玩家选择变速游戏或是均速游戏(此项还要选择速度)音乐:打开frmMusic窗口,玩家选择是
8、否播放音乐以及播放的歌曲 背景:打开frmFace窗口,玩家选择游戏界面的背景图片 关于:查看记录(F6)、游戏说明(F7) 查看记录:打开frmScores窗口 游戏说明:打开frmAboutGame窗口 退出游戏:程序结束 关于游戏:打开frmAboutGame窗口 若在游戏过程中:蛇头碰墙或自己身体:打开frmGameOver窗口:打开frmSave窗口:玩家过关:打开frmGameSuccess窗口:打开frmSave窗口 之后回到主页面 此外frmGame中还调用了Snake和Food类,用来画蛇和食物。 2.系统开发平台的选择 此系统是基于Microsoft Visual Stud
9、io 2022 开发环境开发的。 3. 程序设计语言的选择 此系统的设计语言采用面向对象的程序设计语言Microsoft Visual C# 2.0。 4. 操作平台 硬件条件:Intel PII CPU、256 RAM、20G硬盘以上的PC机 软件条件:Windows 98以上操作系统 第三章总体设计 1.系统的结构图(总图)系统用例图: 系统类图: 系统流程图: 开始选择操作 选择关于游 戏? 选择进入游 戏? No No 显示游戏说明Yes 结束 进入游 戏Yes 退出游戏 进入游 戏 选择操作 开始游戏? 退出游戏? 选择速度? 选择音乐? 选择背景? 选择游戏记 录? NO No N
10、o No No NO 开始游 戏 Yes 返回 Yes 选择变速游戏或是 均速游戏(游戏速 度) Yes 选择播放音乐(播放 歌曲)或是关闭音乐 Yes 选择背景图片 Yes 显示游戏记录 Yes 显示游戏说明 开始游戏 蛇头撞墙or 蛇头碰到自己的身体?玩家过关?选择速度?选择音乐? 选择背景? 选择游戏记录? No No No No 返回 选择变速游戏或是均速游戏(游戏速 度) Yes 选择播放音乐(播放歌曲)或是关闭音乐 Yes 选择背景图片 Yes 显示游戏记录 Yes 显示游戏说明NO 选择操作 No 继续游戏? No Timer1.Enable=true? 暂停游戏? No Yes
11、 No Yes 游戏正在进行,是否要退 出? 显示游戏结束 显示是否保存 是否保存? 保存记录 Yes No 选择游戏说明? Yes No 退出游戏? No Yes Yes Yes Yes 2.函数模块说明 frmSpeed public partial class frmSpeed : Form public int speed = 1; public bool changeSpeed = true; public frmSpeed() InitializeComponent(); private void radChangeSpeed_CheckedChanged_1(object sen
12、der, EventArgs e) nupdSpeed.Enabled = false; nupdSpeed.Value = 1; private void radNotChangeSpeed_CheckedChanged_1(object sender, EventArgs e) nupdSpeed.Enabled = true; private void btnOK_Click(object sender, EventArgs e) if (radChangeSpeed.Checked = true) changeSpeed = true; speed =1; else changeSpe
13、ed = false; speed = Convert.ToInt32 (nupdSpeed.Value); this.Close(); private void btnCancel_Click(object sender, EventArgs e) changeSpeed = true; speed = 1; this.Close(); protected override void WndProc(ref Message m) const int WM_NCHITTEST = 0x84; const int HTCLIENT = 0x1; const int HTCAPTION = 0x2; switch (m.Msg) case WM_NCHITTEST: base.WndProc(ref m); if (int)m.Result = HTCAPTION) m.Result = (IntPtr)HTCLIENT; return; base.WndProc(ref m); 3.系统运行界面截图