您好,欢迎访问三七文档
VC课程设计报告设计题目:贪吃蛇目录第一章引言.....................................................................-1-1.1关于题目.................................................................-1-1.1.1题目要求...........................................................-1-1.1.2选题背景...........................................................-1-1.2关于编译软件.............................................................-1-1.3关于兼容性...............................................................-1-第二章概要设计.................................................................-2-2.1软件主要功能设计.........................................................-2-2.1.1程序结构...........................................................-2-2.1.2程序流程...........................................................-2-第三章软件实现.................................................................-4-3.1变量函数及资源的声明.....................................................-4-3.1.1函数声明...........................................................-4-3.1.2变量声明...........................................................-4-3.1.3资源...............................................................-5-3.2主要功能的实现...........................................................-5-3.2.1游戏界面...........................................................-5-3.2.2初始化食物.........................................................-6-3.2.3开始游戏...........................................................-7-3.2.4英雄榜.............................................................-9-3.2.5游戏设置...........................................................-9-第四章结果与讨论..............................................................-10-4.1程序运行................................................................-10-4.2错误调试与分析..........................................................-12-VC课程设计报告-1-第一章引言1.1关于题目1.1.1题目要求利用MicrosoftVisualC++制作一个贪吃蛇的小游戏,要求:(1)应用MFC单文档制作(2)能够记录游戏时间,游戏成绩(3)可暂停/继续并在玩家不愿游戏时停止游戏(4)蛇的身体能够随着蛇的长度变色(5)能够显示英雄榜(6)有背景音乐和音效1.1.2选题背景贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我,它的制作方法对于以前的我而言都是很神秘的。我希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我的编程能力不是很强,但是我有信心,在这次学习中我将从实践和实际的项目中提高自己的编程能力。因此我选定了这个题目。1.2关于编译软件本程序采用MicrosoftVisualC++6.0的英文版本进行编译。VisualC++6.0是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C++规范,但仍有相当多的编程人员使用VisualC++6.0进行应用系统的开发。1.3关于兼容性本程序经过调试,可以在XP系统下编译运行,也可以在Vista下运行,界面稍有不同,但不影响运行结果。VC课程设计报告-2-第二章概要设计2.1软件主要功能设计2.1.1程序结构根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、暂停游戏以及停止游戏,音乐音效的添加与控制,游戏帮助提示与英雄榜的显示等等。具体的程序结构如下面的图1-1所示。图2-1贪吃蛇结构图2.1.2程序流程根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。贪吃蛇的内容主要包括:游戏开始,随机VC课程设计报告-3-出现食物;按下ToolBar中的暂停按钮或Space键可以实现暂停功能;按下帮助键或ToolBar中的“?”键可获得游戏帮助说明;可播放背景音乐和音效并可通过菜单以及ToolBar控制其播放或停止等等。图2-2贪吃蛇流程图VC课程设计报告-4-第三章软件实现3.1变量函数及资源的声明根据程序的结构,将贪吃蛇需要实现的功能细化成为相应的函数。3.1.1函数声明voidCYuShuoView::OnDraw(CDC*pDC)//在OnDraw函数中绘制游戏背景、游戏文字以及控制蛇的样式颜色。voidCYuShuoView::YsInitFood()//初始化贪吃蛇的食物,使其随机生成voidCYuShuoView::YsInitGame()//初始化贪吃蛇游戏参数voidCYuShuoView::YsReDisplay(CPointysPoint)//重绘游戏窗口voidCYuShuoView::OnYsBegin()//开始游戏(菜单响应消息)voidCYuShuoView::OnYsPause()//暂停游戏(菜单响应消息)voidCYuShuoView::OnYsStop()//停止游戏(菜单响应消息)voidCYuShuoView::OnYsExit()//退出游戏(菜单响应消息)voidCYuShuoView::OnYsEffect()//控制游戏音效voidCYuShuoView::OnYsMusicbkg()//控制游戏背景音乐voidCYuShuoView::OnYsLevel1()//控制游戏等级为初级voidCYuShuoView::OnYsLevel2()//控制游戏等级为中级voidCYuShuoView::OnYsLevel3()//控制游戏等级为高级voidCYuShuoView::OnYsHelpgame()//游戏帮助voidCYuShuoView::OnYsBest()//英雄榜的显示3.1.2变量声明CArrayCPoint,CPointm_ysBody;//定义点数组作为蛇的身体CPointm_ysFood;//食物出现的点intm_ysTime;//显示时间intm_ysTime1;//满10则进一位使时间增加1秒intm_ysDirect;//方向控制变量intm_ysScore;//玩家成绩变量intm_yspausectrl;//暂停控制变量intm_yslevelctrl;//等级控制变量VC课程设计报告-5-CStringm_ysPlayer;//玩家姓名intm_yseffectctrl;//音效控制变量intm_ysmusicctrl;//背景音乐控制变量3.1.3资源1、对话框IDD_YS_HELPGAME//游戏帮助说明IDD_YS_BEST//英雄榜IDD_YS_RETRY//停止游戏确认IDD_ABOUTBOX//关于游戏版本2、音乐IDR_YS_BKGMUSIC//游戏背景音乐IDR_YS_EAT//贪吃蛇吃到食物的音乐IDR_YS_LOWSCORE//游戏结束后得低分音乐IDR_YS_HIGHSCORE//游戏结束后得高分音乐3、位图IDB_YS_BITMAP//游戏背景图4、菜单/工具栏IDR_MAINFRAME//系统自带菜单IDR_YS_TOOLBAR//自己创建的工具条5、头文件mmsystem.h//播放音乐的相应文件fstream.h//文件流文件3.2主要功能的实现3.2.1游戏界面贪吃蛇游戏的游戏界面包括背景图片、蛇身体的绘制、蛇移动范围的绘制等等。其中贪吃蛇的身体用什么方法绘制,才可以使得其在游戏过程中可以实现“吃”的功能是很重要的。因此在游戏界面的初始绘制时就必须考虑到游戏时可能遇到的问题。本程序采用点数组CArrayCPoint,CPointm_ysBody来存储贪吃蛇,点数组的功能很强大,可以添加点,同时可以获得蛇的长度,对于而后进行游戏中控制蛇的颜色以及音效的播放等都有很大VC课程设计报告-6-的帮助。导入位图以及菜单工具条后,游戏未开始前(XP系统下)的界面显示如图3-1所示图3-1游戏初始界面显示3.2.2初始化食物确定用点数组存储贪吃蛇以后,贪吃蛇的食物如何达到随机出现,并且能够按照网格式与蛇头无偏差相接就是一个亟待解决的问题。(下载源码就到源码网:)随机出现应采用rand()函数来实现,而食物与蛇头无偏差相接则利用坐标来解决。设置两个整型变量m_ysX,m_ysY作为食物出现的点的坐标,令m_ysX=rand()%30,,m_ysY=rand()%40即可。使随机出现的点能够整除最小网格,也就是使食物与蛇头无偏差相接。再由食物坐标(m_ysX,m_ysY)与蛇头坐标是否相同判断蛇是否“吃”到了食物,设置判断标签ysTag,如果吃到了,ysTag为1,则再出现下一个食物,反之,如果没吃到,则不出现食物直到VC课程设计报告-7-标签为1为止。最后,再将(m_ysX,m_ysY)赋给m_ysFood作为食物坐标,以便在其他函数中调用。在下面的图3-2中,我们可以看到,蛇的身体是与出现的食物在一条直线上的,完全可以达到相接的目的。图3-2蛇与食物的相接3.2.3开始游戏开始游戏后的重点是如何用键盘来控制蛇的移动并传递到OnTimer(UINTnIDEvent)函数中去以及判断蛇是否死亡。首先说明键盘与蛇的响应,设置一个方向控制变量m_ysDirect,再添加OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags)函数来实现键盘消息的传递,按下不同的键盘按键,m_ysDirect会相应的改变,再利用switch语句在OnTimer(UINTnIDEvent)函数中对坐标进行相应改变即可。如图3-3所示。(1)左(2)下(3)右(4)上图3-3键盘的上下左右键的效果VC课程
本文标题:贪吃蛇毕业论文
链接地址:https://www.777doc.com/doc-5446603 .html