MFC贪吃蛇实验报告
贪吃蛇游戏_实习报告
课程设计报告贪吃蛇游戏设计专业信息工程系学生姓名王洪松班级信息类101班学号100810518时间2011-03-28—2011-04-01课程设计任务书题目贪吃蛇系(部) 信息工程系专业信息类班级2010级1班学生姓名王洪松学号10081051803 月28 日至04 月01 日共 1 周指导教师(签字)系主任(签字)年月日贪吃蛇游戏设计摘要:贪吃蛇是一款经典的休闲游戏,操作小蛇不停的朝食物的方向前进,直到吃掉了食物。
每吃一个食物,小蛇都会长长一节,随之而来的难度加大;当小蛇的头撞到墙时或者小蛇的头与身体相撞时,小蛇就会死亡;当然,小蛇的速度越快,每一个食物的分数就越高。
进程安排3月28日:规划程序需要调用的各个函数,根据要求要实现的内容 3月29日:图形驱动函数 3月30日:开始画面函数3月31日:控制玩游戏过程的函数4月1日: 图形结束函数组装程序,及其调试020406080100第一季度第三季度东部西部北部开发环境概述Visual C++是微软公司的重要产品之一, 是一种功能强大行之有效的可视化编程工具。
它提供了MFC 类库,使用户可以方便的开发自己想实现的功能。
Visual C++6.0的主要特点:(1)自动化和宏功能。
(2)可以灵活地定制工具栏和菜单。
(3)可以直接运行和调试程序,还可以使用宏语言来自动操作调试器。
(4)支持Internet 连接。
(5)一个新的便捷的项目系统可以允许一个工作区内包含多个不同的项目类型。
(6)在工作区内可以包含多个并列的工程文件。
(7)可以在对话框中使用WizardBar 将程序同可视化元素联系起来。
(8)Find in File 命令支持两个独立的输出窗格,可以保存上一次搜索的结果。
这些新特性可以更好地利用Visual C++开发工具进行Windows 应用程序开发。
目录1、概述1.1、用C类环境设计程序的方法 (1)1.2、简要说明., (1)2、设计要求 (1)3、系统分析与模块设计 (2)3.1、算法设计3.2、数据结构3.3、模块设计3.4、模块枝干图4、程序流程图4.1、图形驱动 (3)4.2、开始画面 (4)4.3、显示食物 (5)4.4、蛇向前移动 (6)4.5、判蛇死 (7)4.6、吃到食物后处理 (8)4.7、判蛇反向移动 (9)4.8、游戏结束 (10)4.9、图形结束 (10)5、程序设计及源代码……………………………………………………10-176、运行结果分析…………………………………………………………18-207、实习心得 (21)贪吃蛇游戏的设计1 .概述1.1、用TC设计程序的方法首先应了解设计要求,然后按照功能设计模块,每个模块完成特定的功能,要使模块间的耦合性小,内聚性高;设计模块是相当重要的一个环节。
贪吃蛇游戏程序设计实验报告
Windows编程大作业贪吃蛇设计与实现学校:轻工大学院系:班级:姓名:学号:2015 年12月16日目录一、题目介绍二、设计目的三、详细设计3.1贪吃蛇本体设计3.2贪吃蛇食物设计3.3游戏界面设计3.3.1游戏初始化3.3.2游戏开始3.3.3游戏暂停3.3.4游戏退出3.3.5游戏总界面3.3.6游戏区域与背景3.3.7关于SNAKE3.4玩法规则设计3.5核心设计四、功能测试五、总结六、参考文献一、题目介绍:编写一个基于MFC的小游戏。
基本要求:1、实现一个小游戏2、实现基本游戏控制功能3、具有游戏数据保存功能4、界面布局合理、美观;二、设计目的:通过使用vc++6.0实现一个小游戏的课程设计,进一步掌握MFC的高级使用方法和锻炼自己动手写程序的能力。
了解游戏设计的整个过程,通过熟练使用MFC来设计游戏。
程序主要包括:游戏界面设计,游戏菜单栏设计,游戏初始化,游戏控制等。
培养和锻炼开发游戏的能力。
三、详细设计3.1贪吃蛇的本体设计贪吃蛇的头部拥有一个坐标(x,y),蛇体有一个长度len,蛇有一个运动方向direct,故定义一个结构体如下:struct Snake{int x,y;int len;int direct;}Snake[50];3.2贪吃蛇食物设计贪吃蛇的食物有一个坐标(x,y),此食物有一个标志isfood,当isfood为0时,表示食物还没被吃,为1时,表示被吃。
struct Food{int x;int y;int isfood;}Food;3.3游戏界面设计3.3.1游戏初始化游戏初始蛇体长度为3,颜色为灰色,食物标志为1,因为此时没有显示出食物,需要随机生成后,才置为0;void CSNAKEView::OnInitialUpdate(){CView::OnInitialUpdate();Snake[0].x=10;Snake[0].y=10;Snake[1].x=11;Snake[1].y=10;Snake[2].x=12;Snake[2].y=10;Snake[0].direct=3;Snake[0].len=3;Food.isfood=1;//初始化贪吃蛇起初有3个节点,长度为3,起始坐标;食物默认为1无0有// TODO: Add your specialized code here and/or call the base class }void CSNAKEView::oninit(){CDC *pDC=GetDC();CBrush DrawBrush=(RGB(100,100,100));CBrush *Drawbrush=pDC->SelectObject(&DrawBrush);for(int i=0;i<=Snake[0].len-1;i++)pDC->Rectangle(Snake[i].x*20,Snake[i].y*20,(Snake[i].x+1)*20,(Snake[i].y+1)*2 0);pDC->SelectObject(DrawBrush);}3.3.2游戏开始点击游戏开始菜单后,出现一个对话框,提示一秒后,将开始游戏。
(完整版)mfc贪吃蛇
宿迁学院Windows程序设计课程考核报告班级: 11计本2班学号:姓名:得分:2013年12月20 日1. 设计目的及要求 ............................................................................. - 3 -1.1设计目的及问题描述 .............................................................. - 3 -1.2设计要求 .................................................................................. - 3 -1.3软件、硬件环境 ...................................................................... - 3 -2. 课程设计步骤 ................................................................................. - 3 -3. 课程设计内容 ................................................................................. - 4 -3.1 概要设计 ................................................................................. - 4 -3.1.1 程序总体框架描述 ....................................................... - 4 -3.1.2程序常用类声明和变量的声明 .................................... - 4 -3.2主要技术 .................................................................................. - 5 -3.3系统设计结果(界面截图、操作流程) ............................ - 5 -4.设计总结.......................................................................................... - 24 -4.1遇到的问题及如何解决 ........................................................ - 24 -4.2体会......................................................................................... - 24 -1.设计目的及要求1.1设计目的及问题描述贪吃蛇游戏经典,版本多样,娱乐性高,适合在闲暇时放松心神。
c语言贪吃蛇实训报告
c语言贪吃蛇实训报告C语言贪吃蛇实验报告C语言程序设计实训报告姓名专业班级指导教师二011年7 月14 日11.1 1.2目录实训目的和要求 (1)实训目的和任务........................................................... .................................. 1 实训要求........................................................... .. (1)22.1 2.2实训任务内容 (1)游戏规则........................................................... .................................................. 1 流程设计........................................................... .. (2)33.1 3.2 3.3软件使用说明 (3)编辑程序主要软件........................................................... ............................. 3 编辑程序辅助软件........................................................... ............................. 3 程序使用过程........................................................... ........................................ 3 3.3.1 3.3.2 3.3.3贪吃蛇进入........................................................... ............................. 3 贪吃蛇的玩法........................................................... ........................ 4 贪吃蛇的结束........................................................... (4)44.1 4.2实训心得和体会 (5)实训的心得........................................................... ............................................. 5 实训的体会........................................................... (5)参考文献.............................. 6 附录:部分程序清单. (7)1 实训目的和要求1.1 实训目的和任务1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C 语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力1.2 实训要求1. 分析实训题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用4. 设计完成后提交实训报告2 实训任务内容2.1 游戏规则通过一个学期对C语言程序设计的学习,经过实训,完善我们对C语言学习的漏洞和未学会的知识点,更加熟练的掌握C语言程序设计,锻炼我们独立自主设计程序编辑代码的能力,通过设计出来的程序,提高我们对C语言学习的兴趣,玩家通过键盘控制蛇在地图上寻找食物,蛇吃蛇食物,可以加分,碰到四壁游戏结束。
(完整)数据结构面向对象课程设计MFC贪吃蛇
湖南工业大学课程设计任务书2012 -2013 学年第 2 学期计算机与通信学院(系、部)软件工程专业 1201 班级课程名称:面向对象课程设计设计题目: 贪吃蛇完成期限:自 2013 年 6 月 24 日至 2013 年 6 月 29 日共 1 周指导教师(签字):年月日系(教研室)主任(签字):年月日《面向对象程序设计课程设计》设计说明书基于windows界面应用程序贪吃蛇起止日期: 2013 年 6 月 24 日至 2013 年 6 月 28 日学生姓名汪骁将班级软件工程1201学号12408300126成绩指导教师(签字)计算机与通信学院2013 年 6 月 28 日目录第一章引言1。
1关于题目 (4)1.1。
1题目要求 (4)1.1.2选题背景 (4)1。
2关于编译软件 (4)1。
3关于兼容性 (4)第二章概要设计2。
1软件主要功能设计 (5)2。
1。
1程序结构 (5)2.1.2程序流程 (5)第三章软件实现3.1变量函数及资源的声明 (6)3。
1。
1函数声明 (6)3。
1.2变量声明 (6)3.1。
3资源 (7)3。
2主要功能的实现 (7)3。
2。
1游戏界面 (7)3。
2。
2初始化食物 (7)3。
2。
3开始游戏 (7)3。
2.4游戏设置...................................................... 8第四章解释4。
1个人所分任务详解 ................................................... 8第五章结果与讨论5。
1程序运行 (17)4。
1。
1部分函数与代码 (17)5.2实验总结 (19)第一章引言1.1关于题目1.1.1题目要求利用Microsoft Visual C++制作一个贪吃蛇的小游戏,要求:(1)应用MFC单文档制作(2)能够记录游戏成绩(3)可暂停/继续并在玩家不愿游戏时停止游戏(4)有背景音乐和音效1.1。
贪吃蛇游戏设计报告
青岛理工大学琴岛学院设计报告课题名称:贪吃蛇游戏设计学院:青岛理工大学琴岛学院专业班级:计算机网络技术091 学号:0017学生:王三鹏指导教师:张秀国、宋传磊青岛理工大学琴岛学院教务处2010 年12 月29 日目录需求分析、设计说明........................ 4•…1.设计思路...................... … ....2.程序框图……………………………………5 ………3.主要函数……………………………………7 ………三、代码实现..................... 6 .....1.构造函数............................................. (6)2.放置食物............................................. (6)3.碰撞检测............................................. (7)四、问题解决.................... 9 ......五、总结展望.................... 10 .....六、参考文献10一、需求分析1.选题接到课程设计任务后,我们对曾经非常感兴趣的几款经典小游戏作了分析并筛选,然后发现使用MFC 类库都可以完成这些游戏的编译,但是我们刚刚学习,还不能完全掌握MFC 类的使用和复杂的算法,但是我们相信通过一个简单的贪吃蛇游戏可以让我们对MFC得到充分的锻炼。
2.功能使用MFC编译的游戏,我们预计实现游戏的开始、暂停、继续、等级的提升、难度的增加。
3.重要的MFC1)CWnd:窗口,它是大多数看得见的东西”的父类(Windows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,etc; —个例外是菜单(CMenu)不是从窗口派生的。
MFC贪吃蛇实验报告
贪吃蛇实验报告201221143049 信计1212 许圣1.概述此次课程设计我利用MFC制作了一个贪吃蛇游戏,用户可以通过上下左右控制蛇的移动方向,游戏会根据贪吃蛇身体的长度自动增加难度。
在游戏过程中,会记录运行时间和所得分数,我还添加了bmp格式的图片作为游戏背景。
2.功能描述2.1设计思路本软件主要由三个模块构成,它们分别是蛇运行模块,初始化处理模块和显示模块。
它们的作用分别是,初始化处理:初始化蛇头位置与第一个点位置;蛇运行模块:控制蛇的上下左右运行,并对蛇的运行状态进行判断,根据(吃点、未吃点、死亡等)状态进行不同的子程序模块处理以及游戏者是否能晋级的判断;显示模块:根据对蛇和点子的当前状态进行动画显示。
主要有以下步骤:1.定义蛇类和食物类,初始化贪吃蛇各项成员变量,包括图像的出现在屏幕的初始位置,长度,以及蛇的行走方向。
食物类的定义包括出现的初始位置,以及食物是否被吃掉的判断。
2.用数组初始化长度为4的贪吃蛇,并且默认出现一个食物。
3.在CView类上运用MFC提供的Windows消息中WM_TIMER消息,运用OnTimer()函数让系统提供一个时钟节拍,更新游戏4.具体游戏实现,包括蛇撞到自己和围墙都将使游戏结束,判断吃豆等,其中还包括根据蛇的长度来进行游戏难度的改变。
5.具体键盘游戏操作运用到Windows消息响应中的WM_KEYDOWN,用OnKeyDown()来响应玩家的实际操作。
6.添加了bmp格式的图片作为游戏背景。
整体流程图如下图1。
图1:系统流程图2.2功能介绍⑴运行程序,出现围墙界面,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,出现bmp格式图片的背景。
⑵点击“游戏->游戏开始”,游戏开始。
还可暂停游戏继续⑶游戏开始后,界面右下角会同步游戏得分。
⑷通过四个方向键控制蛇的运动方向,吃掉随机出现的豆子,若不小心碰到墙壁或者与自身相交,则该轮游戏结束。
⑸游戏会根据蛇身的长度自动调节难易程度。
贪吃蛇综合设计报告
《高级语言程序设计》综合实验报告第一小组:贪吃蛇游戏一、实验环境操作系统:Windows 10编程环境:codeblocks二、实验内容与完成情况(主要介绍项目总体功能分析与说明)功能1♦功能1的文字描述移动控制台光标坐标♦功能1实现的流程图♦功能1代码功能2♦功能2的文字描述改变蛇的移动方向♦功能2实现的流程图功能2代码功能3功能3的文字描述判断蛇是否吃到食物,是,则生成新食物的坐标,得分、等级、速度和蛇的长度增加;否,则保留原食物坐标。
功能3实现的流程图功能3代码功能4♦功能4的文字描述判断蛇是否存活♦功能4实现的流程图功能4代码功能5♦功能5的文字描述显示游戏图像、得分和等级。
♦功能5代码功能6♦功能6的文字描述运行调用游戏相关的函数,储存最高分、打破记录的人和分数、进入排行榜的人数(打破前一个最高分记录才能进入排行榜)。
♦功能6实现的流程图功能6的代码功能7♦功能7的文字描述调用功能6的函数,死亡后可选择重新开始或退出游戏输出排行榜。
♦功能7实现的流程图功能7的代码功能8♦功能8的文字描述读取储存了排行榜信息的文件,并赋值给姓名和得分变量char name1[10]、int score1,在控制台界面上输出排行榜♦功能8的代码三、功能测试1、游戏开始界面测试结果:用户可以输入自己喜欢的英文名字。
输入完成后按回车键可以看到游戏的操作指南。
2、蛇的移动、食物、分数记录测试结果:游戏开始,蛇头“@”和食物“*”出现,可以用“WSAD”来控制蛇上下左右移动,成功吃到食物蛇身变长并且每吃到一个食物右侧记录的等级和得分会增加一点。
3、蛇的死亡,最高纪录和排行榜显示测试结果:蛇死亡后界面自动弹出“Game over”并且显示出玩家在上一局的分数;接着玩家可以选择“y”或“n”来决定是否重玩游戏,不重玩游戏则输出排行榜并按任意键结束。
四、项目总结(其中的错误和解决方案)1闪屏。
游戏开始后界面上的所有字符都在闪烁,并且频率越来越快。
C++大作业项目报告--贪吃蛇游戏的MFC设计
“C++程序设计”课程大作业项目报告项目名称:贪吃蛇游戏的MFC设计姓名:XXX学号:XXX班级:XXX日期:2013.12.25小组概况目录1系统功能设计 (4)2系统总体结构 (4)3本人工作内容 (5)4项目总结 (6)5相关问题的说明 (6)1系统功能设计在一个密闭的空间内,通过按键上的四个光标控制蛇的上下左右四个方向移动,蛇头碰撞到食物则表示食物被蛇吃掉,这时蛇的身长长一节,接着出现食物,等待被蛇吃掉,如果蛇在移动过程中,蛇头撞到墙壁或者身体与蛇头接触则游戏结束。
2系统总体结构2.1设计思路说明在数据结构上,用数组存储蛇以及蛇的运动区域。
在数组中,每个元素有四个云感动方向,分别为RIGHT,LEFT,UP,DOWN.在没有蛇身的区域,数组的元素值为0。
在蛇身的每个节点,用一个数组元素存储当前蛇节点的运动方向。
通过改变数组中元素的值来表示蛇身的移动。
在程序中运用定时器来保证蛇的持续移动。
每个一定的时间间隔,蛇移动一格。
在设计界面时。
在Visual Studio 6.0的环境下,建立基于对话框的单文档工程,在工程下设计游戏界面,实现贪食蛇运行算法。
在对话框中画出一个矩形,实现封闭空间。
在大矩形中,用20x20的像素单位绘出蛇身,当蛇每移动一小格的时候,重绘整个窗口。
在对蛇身进行绘画时。
通过数组元素的值将蛇身在对话框的矩形中显示出来。
在蛇身运动时,首先在蛇头位置蛇身增长一个节点,然后判断蛇头是否到达食物所在位置,若在食物所在位置,则蛇尾不减一,蛇身继续移动,若蛇头不再食物位置,则蛇尾减一,蛇身继续移动。
若蛇头越界或者蛇头与蛇身重叠,则游戏结束,并弹出得分。
2.2重要的MFC1.CMenu:菜单2.CView:视图,负责内存数据与用户的交互。
包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。
最重要的是OnDraw(重画窗口),通常用CW nd::Invalidate()来启动它。
另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。
贪吃蛇游戏课程设计实验报告
辽宁科技大学课程设计说明书设计题目:基于C#的贪吃蛇游戏学院、系:装备制造学院专业班级:计算机科学与技术学生姓名:叶佳佳指导教师:丁宁成绩:2015年12月12日目录一、概述 (1)1、用C#实现该设计的方法 (1)2、贪吃蛇游戏说明 (1)二、实验目的及设计要求 (1)1、实验目的 (1)2、实验要求 (2)三、课程设计具体实现 (2)1、概要设计 (2)1.1、设计思想 (2)1.2、主模块实现 (2)1.3、主函数流程图 (4)2、详细设计 (5)2.1、设计思想 (5)2.2、具体模块实现: (5)四、调试过程及运行结果 (10)1、调试过程 (10)2、实验结果 (11)五、实验心得 (12)六、参考资料 (13)七、附录:源代码 (13)一、概述1、用C#实现该设计的方法首先应该了解设计要求,然后按照功能设计出实际模块,每个模块都要完成特定的功能,要实现模块间的高内聚,低耦合。
设计模块是一个相当重要的环节,模块的数量不宜太多,也不宜太少,要是每个模块都能比较简单的转换成流程图。
模块设计完成后,就该给每个模块绘制流程图。
流程图要尽可能的简单且容易理解,多使用中文,补一些过长的代码,增加理解难度。
此外,流程图应容易转换成代码。
根据流程图编写好代码后在WindowsXP操作系统,2008开发环境下进行运行测试,检查错误,最终设计出可行的程序。
2、贪吃蛇游戏说明游戏操作要尽可能的简单,界面要尽可能的美观。
编写程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分;接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁、障碍物或身体交叉(蛇头撞到自己的身体),则游戏结束。
游戏结束时输出相应得分。
具体要求有以下几点:(1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;(2)系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面;(3)说明书、流程图要清楚;二、实验目的及设计要求1、实验目的.NET课程设计是教学实践环节中一项重要内容,进行此课程设计旨在掌握基础知识的基础上,进一步加深对VC#.NET技术的理解和掌握;提高和加强学生的计算机应用及软件开发能力,使学生具备初级程序员的基本素质;培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应信息管理行业日新月异的发展形势;本次课程设计是以学生独立思考解决问题为主,教师指导为辅,结合上机操作,完成指定的任务,做出设计报告。
C语言贪吃蛇实验报告
C语言程序设计实训报告姓名专业班级指导教师二011 年 7 月 14 日目录1实训目的和要求 (1)1.1实训目的和任务 (1)1.2实训要求 (1)2实训任务内容 (1)2.1游戏规则 (1)2.2流程设计 (2)3软件使用说明 (3)3.1编辑程序主要软件 (3)3.2编辑程序辅助软件 (3)3.3程序使用过程 (3)3.3.1贪吃蛇进入 (3)3.3.2贪吃蛇的玩法 (4)3.3.3贪吃蛇的结束 (4)4实训心得和体会 (5)4.1实训的心得 (5)4.2实训的体会 (5)参考文献 (6)附录:部分程序清单 (7)1实训目的和要求1.1 实训目的和任务1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力1.2 实训要求1. 分析实训题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用4. 设计完成后提交实训报告2实训任务内容2.1 游戏规则通过一个学期对C语言程序设计的学习,经过实训,完善我们对C语言学习的漏洞和未学会的知识点,更加熟练的掌握C语言程序设计,锻炼我们独立自主设计程序编辑代码的能力,通过设计出来的程序,提高我们对C语言学习的兴趣,玩家通过键盘控制蛇在地图上寻找食物,蛇吃蛇食物,可以加分,碰到四壁游戏结束。
2.2流程设计贪吃蛇流程图如图1所示图1贪吃蛇流程图贪吃蛇运行说明图如图2所示图2贪吃蛇运行说明图3软件使用说明3.1 编辑程序主要软件对于这次实训,主要使用的软件是VC++6.0,在平日的学习中,我们也经常使用这种软件进行编程,已基本掌握此软件的用法,所以在此次实训中,我还是主要使用VC++6.03.2 编辑程序辅助软件辅助软件有turboc,因为在贪吃蛇程序代码设计阶段,VC++6.0需要自己人工绘图,还没有熟练掌握绘图功能时,我使用turboc 调用graphics中的函数避免了人工绘图的麻烦,利用turboc软件进行调试其他函数部分,待人工绘图结束后重新回归VC++6.0。
贪吃蛇实验报告实验心得(3篇)
第1篇一、实验背景随着科技的不断发展,计算机编程已成为现代教育的重要组成部分。
贪吃蛇游戏作为一款经典的编程学习项目,不仅能够帮助学生掌握编程基础,还能提高学生的逻辑思维能力和编程实践能力。
本次实验,我选择了使用C语言编写贪吃蛇游戏,通过实验过程,我收获颇丰。
二、实验目的1. 熟悉C语言编程环境,掌握基本的语法和编程技巧。
2. 学习并应用数组和结构体等数据结构,提高编程能力。
3. 理解并实现贪吃蛇游戏的算法,提高逻辑思维能力。
4. 掌握游戏开发的基本流程,提高编程实践能力。
三、实验过程1. 需求分析:在实验开始前,我首先对贪吃蛇游戏进行了需求分析,明确了游戏的基本规则和功能。
游戏规则包括:蛇的移动、食物的生成、蛇的吃食、蛇的生长、游戏结束等。
2. 设计思路:根据需求分析,我制定了以下设计思路:- 使用二维数组表示游戏界面,数组中的每个元素代表一个格子,蛇、食物、墙壁等都在数组中用特定的值表示。
- 使用结构体表示蛇的各个部分,包括蛇头的位置、方向、长度等。
- 通过键盘输入控制蛇的移动方向。
- 使用循环和条件语句实现蛇的移动、食物的生成、蛇的吃食、蛇的生长等功能。
- 判断游戏结束的条件,如蛇头撞墙、撞到自己等。
3. 编程实现:在确定了设计思路后,我开始编写代码。
首先,我定义了二维数组表示游戏界面,并初始化蛇和食物的位置。
然后,编写了蛇的移动、食物的生成、蛇的吃食、蛇的生长等功能。
最后,编写了游戏结束的判断条件。
4. 调试与优化:在编程过程中,我遇到了一些问题,如数组越界、蛇头移动方向错误等。
通过查阅资料和调试,我逐步解决了这些问题。
在实验过程中,我还对代码进行了优化,提高了程序的运行效率。
四、实验心得1. 编程基础的重要性:通过本次实验,我深刻体会到编程基础的重要性。
只有掌握了基本的语法和编程技巧,才能在编程过程中游刃有余。
2. 逻辑思维能力:在编写贪吃蛇游戏的过程中,我需要不断思考如何实现游戏的各个功能,这锻炼了我的逻辑思维能力。
贪吃蛇小游戏实验报告[
- 0 -软件设计报告设计题目: 贪吃蛇 目录一. 需求分析 二. 概要设计 三. 详细设计四. 心得体会一. 需求分析1.1关于题目 1.1.1题目要求(1)利用MicrosoftVisualC++制作一个贪吃蛇的小游戏, 要求:(2)应用MFC 单文档制作(3)能够记录游戏成绩学 院:专业班级:学生姓名:学生学号:指导教师:提交时间:成 绩:(4)可根据玩家要求设置游戏速度(级别): 初级, 中级, 高级可以根据个人喜好更换背景图片, 食物图片, 障碍物图片, 结束图片等1.1.2选题背景贪吃蛇是家喻户晓的益智类小游戏, 选择这个题目一是为了将自己的所学知识加以运用, 二是一直以来贪吃蛇这个游戏就深深地吸引着我们, 它的制作方法对于以前的我们而言都是很神秘的。
我们希望通过自己的所学知识把它剖析开来, 真真正正的了解它的本质和精髓。
虽然我们的编程能力不是很强, 但是我们有信心, 在这次学习中我们将从实践和实际的项目中提高自己的编程能力。
因此我们选定了这个题目。
1.2关于编译软件本程序采用Microsoft Visual C++6.0的英文版本进行编译。
VisualC++6.0是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具, 尽管Microsoft公司推出了.NET平台的集成开发环境, 但由于其良好的界面和可操作性, 加上支持标准C/C++规范, 但仍有相当多的编程人员使用VisualC++6.0进行应用系统的开发。
- 1 -1.3关于兼容性本程序经过调试, 可以在XP系统下编译运行, 也可以在Vista下运行, 界面稍有不同, 但不影响运行结果。
二. 概要设计2.1软件主要功能设计2.1.1程序结构根据分析, 贪吃蛇这个程序一共要实现如下几个功能, 包括游戏方面开始游戏、停止游戏, 设置游戏级别(速度), 设置图片等。
具体的程序结构如下面的图1-1所示。
- 2 -图2-1 贪吃蛇结构图2.1.2程序流程根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。
贪吃蛇课程设计报告
贪吃蛇课程设计报告 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】目录1.课程设计目的 (3)2.课程设计任务与要求 (3)课程设计内容 (3)课程设计要求 (3)课程设计环境 (3)3.课程设计方案 (3)方案论证 (3)程序整体设计说明 (3)设计思路 (4)设计总体流程图 (4)设计的具体实现 (5)4.程序测试 (8)测试内容与结果 (8)程序运行效果图 (9)5.课程设计总结 (10)6.参考文献 (11)附录源程序 (11)1.课程设计目的:●复习、巩固才C、C++的基础知识,进一步加深对VC技术的理解和掌握;●课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
●培养学生在项目开发中团队合作精神、创新意识及能力2.课程设计任务与要求课程设计内容贪吃蛇游戏开发,首先它可以为大家提供一种当前比较流行的休闲小游戏。
贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着很多人,它的制作方法对于很多同学而言都是很神秘的。
所以我们希望通过这学期所学知识把它剖析开来,真真正正的了解它的本质和精髓。
在这次学习中我们将从实践和实际的项目中提高自己的编程能力。
因此决定选择这个题目作为VC的课程设计。
最后一部分就是游戏的模块划分,根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、暂停游戏以及停止游戏,游戏设置(蛇的颜色、食物的颜色操作说明等)与积分。
课程设计要求●对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;●系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面;●说明书、流程图要清楚;●记录设计情况(备查,也为编写设计说明书作好准备);课程设计环境Windows7操作系统,开发环境。
贪吃蛇游戏实验报告
游戏过程界面:进行游戏
2008 年 8 月 22 日 2
2008 年计算机实习报告
游戏结束界面:选择是否重新游戏
1.3 使用方法 [比如:可以是什么键控制游戏?是否可以划分那难度?游戏是否可配置,界面风格是 否可选等等] 用方向键控制蛇的移动,输入 1,2,3,选择难度,游戏中按除方向键其他键暂停,结束 界面 y 重新游戏,n 退出游戏
一个元素取代前一个位置,蛇头向前移动一,如有按键,则跳出内循环,根据按键寻则蛇的 运动
伪代码: while 循环 检测是否有按键,若有,进入相应循环 休眠 原来蛇位置变为空白 蛇身数组后一个元素取代前一个元素位置 根据按键改变蛇头位置 显示蛇身 若有按键,跳出内循环
算法 2:水果的产生 使用结构表示水果,当水果被蛇吃掉后,随机产生一个水果 伪代码:if 蛇头位置与水果位置重合
While 循环 随机产生水果的坐标 If 坐标在框图内 { If 水果坐标不与蛇每一个坐标重合 跳出循环 } 算法 3:判断蛇的死亡 While a=0 For 取遍蛇身每一个元素 { If 蛇头出了框图或蛇头与蛇身重合 a=1 }(a=1 则循环停止) 2.3 程序设计的难点和关键点 :1 随机产生水果的位置,要保证水果在框图内且水果与蛇身不重和, 2,判断蛇的死亡 3,控制蛇的颜色变换 4,对于分数的储存和导入 2.4 调试的方法
2008 年 8 月 22 日 3
2008 年计算机实习报告
二.程序设计说明
2.1 总体设计框架 [包括程序执行流程,模块划分等,需要有文字说明和框图表示] 开始
界面 界面
选择难度
贪吃蛇游戏实验报告
*****************实验报告实验名称: 网络编程基础实训教程(贪吃蛇)指导教师:姓名:学号:班级:提交日期:1.实验目的通过开发一款贪吃蛇游戏程序, 熟练掌握C#编程语言、和面向对象程序设计方法, 独立完成一个游戏程序的开发。
2.实验题目使用C#编程语言, 开发一款贪吃蛇游戏, 如下图所示。
3.功能描述a)游戏场地是一片矩形区域的草坪。
b)一条蛇由蛇头和蛇身组成。
c)当游戏开始之后, 草坪中出现一颗豆和一条蛇, 并且蛇不停地移动, 蛇移动方向与蛇头一致。
d)当游戏暂停之后, 蛇停止移动。
e)当蛇移动时, 玩家使用“↑”、“↓”、“←”和“→”四个键控制蛇的移动方向。
f)当蛇头与豆的位置重合时, 豆被蛇吃掉, 同时在草坪中再生成一颗新的豆, 蛇身增加一节。
当蛇头碰到蛇身时, 则咬断蛇身, 后半部分的蛇身消失。
当蛇头碰到草坪四周时, 蛇立即毙命, 游戏结束。
4.需求分析根据功能描述可知, 贪吃蛇游戏的系统结构图如下所示。
1)定义数据字典如下:2)草坪(Lawn): 草坪是贪吃蛇游戏的场地。
豆和蛇只能存在于草坪范围之内。
草坪具有大小和颜色等属性。
蛇(Snake):在贪吃蛇游戏中, 蛇由若干节组成, 其中第一节是蛇头, 其余是蛇身。
在游戏过程中, 有且仅有一条蛇, 并且蛇在不停地移动。
如果蛇吃了豆, 则蛇生长一节。
如果蛇头碰到蛇身, 则咬断蛇身, 后半部分的蛇身消失。
如果蛇头离开草坪, 则蛇死亡游戏结束。
蛇具有长度、颜色、运动方向、每一节的位置等属性。
豆(Bean):在贪吃蛇游戏中, 豆是蛇的食物。
在游戏过程中, 有且仅有一颗豆。
如果蛇吃了豆, 则重新生成一颗豆。
豆具有位置、大小和颜色等属性。
5.设计说明根据需求分析可知, Snake的每一节都有位置和大小等属性。
而Bean也具有这两个属性。
抽象出二者的共同特征, 抽象出一般类Block, 用于描述一个块。
Block派生出Bean和SnakeBlock两个类, 其中SnakeBlock类用于描述蛇的一节。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
贪吃蛇实验报告201221143049 信计1212 许圣1.概述此次课程设计我利用MFC制作了一个贪吃蛇游戏,用户可以通过上下左右控制蛇的移动方向,游戏会根据贪吃蛇身体的长度自动增加难度。
在游戏过程中,会记录运行时间和所得分数,我还添加了bmp格式的图片作为游戏背景。
2.功能描述2.1设计思路本软件主要由三个模块构成,它们分别是蛇运行模块,初始化处理模块和显示模块。
它们的作用分别是,初始化处理:初始化蛇头位置与第一个点位置;蛇运行模块:控制蛇的上下左右运行,并对蛇的运行状态进行判断,根据(吃点、未吃点、死亡等)状态进行不同的子程序模块处理以及游戏者是否能晋级的判断;显示模块:根据对蛇和点子的当前状态进行动画显示。
主要有以下步骤:1.定义蛇类和食物类,初始化贪吃蛇各项成员变量,包括图像的出现在屏幕的初始位置,长度,以及蛇的行走方向。
食物类的定义包括出现的初始位置,以及食物是否被吃掉的判断。
2.用数组初始化长度为4的贪吃蛇,并且默认出现一个食物。
3.在CView类上运用MFC提供的Windows消息中WM_TIMER消息,运用OnTimer()函数让系统提供一个时钟节拍,更新游戏4.具体游戏实现,包括蛇撞到自己和围墙都将使游戏结束,判断吃豆等,其中还包括根据蛇的长度来进行游戏难度的改变。
5.具体键盘游戏操作运用到Windows消息响应中的WM_KEYDOWN,用OnKeyDown()来响应玩家的实际操作。
6.添加了bmp格式的图片作为游戏背景。
整体流程图如下图1。
图1:系统流程图2.2功能介绍⑴运行程序,出现围墙界面,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,出现bmp格式图片的背景。
⑵点击“游戏->游戏开始”,游戏开始。
还可暂停游戏继续⑶游戏开始后,界面右下角会同步游戏得分。
⑷通过四个方向键控制蛇的运动方向,吃掉随机出现的豆子,若不小心碰到墙壁或者与自身相交,则该轮游戏结束。
⑸游戏会根据蛇身的长度自动调节难易程度。
3.详细设计3.1主要函数●void CSnakeView::OnDraw(CDC* pDC)//显示背景图片●void CSnakeView::OnKeyDown(UINT nChar, UINT nRepCnt, UINTnFlags)//按照用户的按键来控制蛇的移动●void CSnakeView::OnTimer(UINT nIDEvent)//根据蛇的长度来进行SetTimer()函数的定义,可以根据长度来进行游戏难度的设定。
//撞界判断//蛇身相撞判断//抹掉蛇行走的痕迹//判断吃豆的条件,撞到就吃//如果食物被吃了就生成●void CSnakeView::oninit()//进行贪吃蛇外观的初始化●void CSnakeView:: OnGameStart ()//开始游戏●void CSnakeView:: IniAim ()//初始化目标的位置●void CSnakeView::IniGame()//初始化游戏●void CSnakeView::ReDisplay(CPoint pPoint)●bool CSnakeView::ReadBmp(char *bmpName)3.2主要功能介绍:3.2.1 背景图片加载:定义变量和函数用于读取 bmp图片做准备:BITMAPINFOHEADER head;unsigned char *pBmpBuf;bool ReadBmp(char *bmpName);定义ReadBmp函数用于读取bmp格式的图片,在初始化的时候调用该函数ReadBmp("BootPic.bmp"),来读取背景图片。
在OnDraw函数中实现对图片的刷新:CRect rec;GetClientRect(&rec);SetStretchBltMode(pDC->m_hDC, HALFTONE);SetBrushOrgEx(pDC->m_hDC, 0, 0, NULL);StretchDIBits (pDC->m_hDC, rec.left, rec.top, rec.Width(), rec.Height(), 0, 0, head.biWidth, head.biHeight, pBmpBuf, (BITMAPINFO*)&head, DIB_RGB_COLORS, SRCCOPY);3.2.2 初始化游戏:主要初始化蛇的初始化位置,实物的初始化位置:void CSnakeView::IniGame(){m_nLeft=20;m_nTop=20;m_nWidth=40;m_nHeight=30;m_nSize=10;m_nGameStatus=0;m_nDirect=1;m_nCount=0;m_aBody.RemoveAll();m_aBody.Add(CPoint(2,7));m_aBody.Add(CPoint(2,6));m_aBody.Add(CPoint(2,5));m_aBody.Add(CPoint(2,4));m_nTime=0;m_nTime1=0;IniAim();}3.2.3控制游戏操作:键盘消息是用户通过键盘发出的消息,是用来控制蛇的爬行方向。
这个消息将会用到OnKeyDown()函数。
OnKeyDown()函数根据用户按下的按键执行相应的语句块,即通过if判断语句来实现。
下面以RIGHT键为例进行说明。
当按下RIGHT键后,函数执行第一个if分支,在该分支中,首先判断蛇是否是向左走的,如果蛇是向左走的,则按右键无效,因为蛇不能“穿过”自己的身体。
在满足蛇不是向左走的条件后,进入该分支,启动与该方向相应的时钟函数SetTimer,SetTimer()通过不同的ID号来执行OnTimer的不同分支,同时杀死其他时钟函数,并对蛇的运行方向做重新标记。
void CSnakeView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags){// TODO: Add your message handler code here and/or call defaultswitch(nChar){case 38:m_nDirect=4;break;case 40:m_nDirect=3;break;case 37:m_nDirect=2;break;case 39:m_nDirect=1;break;}CView::OnKeyDown(nChar, nRepCnt, nFlags);}void CSnakeView::OnTimer(UINT nIDEvent){// TODO: Add your message handler code here and/or call defaultm_nTime1++;if(m_nTime1==10)m_nTime++;m_nTime1=0;Invalidate();}CPoint uPoint=m_aBody.GetAt(0);int uTag=0;switch(m_nDirect){case 1:uPoint.y++;if(uPoint.y>=m_nWidth)uTag=1;break;case 2:uPoint.y--;if(uPoint.y<0)uTag=1;break;case 3:uPoint.x++;if(uPoint.x>=m_nHeight)uTag=1;break;case 4:uPoint.x--;if(uPoint.x<0)uTag=1;break;}if(uTag==0){for(int i=0;i<=m_aBody.GetUpperBound();i++){CPoint uPoint1=m_aBody.GetAt(i);if(uPoint1.x==uPoint.x&&uPoint1.y==uPoint.y){uTag=1;break;}}}if(uTag==0)m_aBody.InsertAt(0,uPoint);ReDisplay(uPoint);if(uPoint.x==m_pAim.x&&uPoint.y==m_pAim.y){m_nCount++;IniAim();Invalidate();}else{CPoint uPoint1=m_aBody.GetAt(m_aBody.GetUpperBound());m_aBody.RemoveAt(m_aBody.GetUpperBound());ReDisplay(uPoint1);}}else{KillTimer(1);AfxMessageBox("Fail");}CView::OnTimer(nIDEvent);}4.实验结果贪吃蛇进入界面如下图所示贪吃蛇的玩法如图数字键盘下的方向键分别为上下左右,进行控制,使蛇头触碰到食物。
游戏结束界面如上图所示,游戏结束后,会显示游戏的最终得分。
5.总结这次课程设计,我选择用MFC编写一个贪食蛇的程序。
在编写程序之前,我只有很少的关于MFC的程序设计知识,因此,在刚开始,我遇到了很多困难。
为此,我在网上看了许多关于贪食蛇的算法,测试别人的代码= =,并学以致用。
才开始写我的贪食蛇,整合学习的东西并且加了很多附加功能。
这次课程设计锻炼了我的动手能力。
通过完成贪食蛇游戏的程序设计,累积了我的实际编程经验,也提高了我独立解决问题的能力。
由于所学有限,经验不足,代码经常出现错误,最终终于能够正确的运行。
但在过程中遇到了不少问题。
比如在贪吃蛇行进中急转死亡的bug。
食物生成不出来的问题食物长在蛇的身上- -。
,界面优化插入图片当做背景的问题,最终通过查阅资料、请教他人修改了参数才得以解决。
另外,很多在学习中没有涉及的函数,只能只能上网百度,借鉴别人的代码,进行测试=。
慢慢了解mfc各方面的知识。
我想这次程序所设计不单单是对学习的一种巩固我们可以在今后的工作学习中运用这次坚持不懈的精神,不断加强自己各方面的能力。
我们很感激老师提供我们这样一个机会,让我们接触学习到专业知识以外的东西,这对我们来说,不仅仅是怎样处理问题,更多的是了解编程的不易,培养我们坚定的毅力,让我们有信心和勇气去面对将来更大的挑战。
6.参考文献百度,谷歌= =。