收藏 分销(赏)

毕业设计(论文)-基于VC--贪食蛇游戏的设计与实现.doc

上传人:胜**** 文档编号:2908300 上传时间:2024-06-11 格式:DOC 页数:43 大小:917KB
下载 相关 举报
毕业设计(论文)-基于VC--贪食蛇游戏的设计与实现.doc_第1页
第1页 / 共43页
毕业设计(论文)-基于VC--贪食蛇游戏的设计与实现.doc_第2页
第2页 / 共43页
毕业设计(论文)-基于VC--贪食蛇游戏的设计与实现.doc_第3页
第3页 / 共43页
毕业设计(论文)-基于VC--贪食蛇游戏的设计与实现.doc_第4页
第4页 / 共43页
毕业设计(论文)-基于VC--贪食蛇游戏的设计与实现.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

1、XXX学院面向对象程序设计(c+/vc+)课程设计报告题 目:基于VC+贪食蛇游戏的设计与实现学 号:班 级:小组成员:指导教师: 所属系部: 2014年 6月 3 日2课程设计任务书课程名称面向对象程序设计(C+/VC+)时间2014.6.3-2014.6.6题 目基于VC+的贪食蛇游戏的设计与实现主要内容:本设计实现了一个简单的贪食蛇小游戏,该游戏不仅实现了简单的游戏操作功能,还实现了灵活的运作功能,而且具有简洁大方的图文外观。此设计按照软件工程的方法进行,系统具有良好的界面和必要的交互信息,使操作人员能快捷简单地进行操作,给玩家一个简易有趣的游戏。本系统开发平台为WindowsXP,程序

2、设计语言采用C+,在程序设计中,采用了结构化与面向对象两种解决问题的方法。要求:(1)通过实际软件项目的分析、设计、编码、测试等工作,掌握用软件工程的方法来开发和维护系统。(2)按要求编写课程设计报告书,能正确编写分析、设计、编码、测试等技术文档和用户使用手册。 (3)进行系统的联合调试,编写系统使用说明。(4)完成系统的文档、设计说明工作任务分配:计科132班:XXX XXX负责程序框架设计和服务端代码编写计科132班:XXX主要负责软件测试及调试计科132班:XXX主要负责撰写报告与汇报摘要本设计实现了一个简单的贪食蛇小游戏,该游戏不仅实现了简单的游戏操作功能,还实现了灵活的运作功能,而且

3、具有简洁大方的图文外观。此设计按照软件工程的方法进行,系统具有良好的界面和必要的交互信息,使操作人员能快捷简单地进行操作,给玩家一个简易有趣的游戏。本系统开发平台为WindowsXP,程序设计语言采用C+,在程序设计中,采用了结构化与面向对象两种解决问题的方法。关键词:贪食蛇;MFCAbstratcThis design implements a simple bulimia small snake game, the game is not only realize the function of simple operation, and realize the function of f

4、lexible operation, and has a concise and easy by appearance. This design according to the method of software engineering, system has a good interface and the interaction of the necessary information, allow the operator to quick and easy to operate, easy to give players a fun game. This system develo

5、pment platform for Windows XP, using c + + program design language, in programming, using the structured and object oriented method to solve the problem. Key words: Gluttony Snake; MFCII目录摘要IABSTRATCII1引言:11.1课题背景介绍11.2 MFC简介12系统分析22.1可行性分析22.2系统需求分析22.2.1课题需求22.2.2功能需求32.2.3游戏环境需求32.2.4游戏界面需求42.3程序

6、分析62.3.1游戏大体框架62.3.2主要游戏函数62.3.3游戏程序整体间调用关系图73程序设计83.1游戏教程的知识点83.2游戏基本流程和大体思想83.3游戏程序模块实现函数说明93.4程序变量声明154 系统实现234.1坐标位置信息模块实现234.2键盘方向键操作模块实现234.3蛇身撞界与分数计算模块实现234.4食物重新生成模块实现244.5游戏测试255 总结26参考文献27附录281引言在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。在程序设计中,可以用两种方法解决问题:一是传统的结构化程序设计方法,二是更

7、先进的面向对象程序设计方法。1.1课题背景介绍贪食蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己所学的知识加以应用,二是一直以来贪食蛇这个游戏就深深地吸引着我们,它的制作方法对于以前的我们而言都是很神秘的。我们希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我们的编程能力不是很强,但是我们有信心,在这次学习中我们将从实践和实际的项目中提高自己的编程能力。因此我们选了这个题目作为我们的课程实训。1.2 MFC简介MFC(MicrosoftFoundationClasses),是一个微软公司提供的类库(classlibraries)以C+类的形式封装了Windows的

8、API,它包含了窗口等许多类的定义。各种类的集合构成了一个应运程序的框架结构,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。MFC6.0版本封装了大约200个类,其中的一些可以被用户直接使用。例如CWnd类封装了窗口的功能,包括打印文本、绘制图形及跟踪鼠标指针的移动等;CsplitterWnd是从CWnd类派生出来的,继承了基类或称父类CWnd类的所有特性,但增加了自己的功能,实现拆分窗口,使窗口至少可被拆分成两个窗口,用户可以移动两个窗口之间的边框来改变窗口的大小;CtoolBar类可以定义工具等。MFC命名的惯例是

9、类的名字通常是由“C”打头;成员变量使用前缀“m_”,接着使用一个字母来指明数据类型,然后是变量的名称;所有的单词用大写字母开头。2系统分析2.1可行性分析贪食蛇游戏是一种简单的大众的游戏,自计算机实现以来,十分深受广大电脑玩家的喜爱,做一个简单的贪食蛇游戏。贪食蛇的核心玩法是一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个方向键控制蛇向上接着又出现食物,等待被蛇吃掉,这时蛇身增长一节,同时获得10分。如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。并且可以在游戏开始前自由选择游戏难度,游戏过程中可暂停游戏,并有积分系统,且积分每满一定值,蛇的运行速度会逐步

10、增加。2.2系统需求分析2.2.1课题需求接到课程设计任务后,我们对曾经非常感兴趣的几款经典小游戏作了分析并筛选,然后发现使用MFC类库都可以完成这些游戏的编译,但是我们刚刚学习,还不能完全掌握MFC类的使用和复杂的算法,但是我们相信通过一个简单的贪吃蛇游戏可以让我们对MFC得到充分的锻炼。贪吃蛇游戏作为一款经典小游戏,版本多样,娱乐性也很高,适合在闲暇时放松心神。并且可在多个平台上实现,程序简单易懂,非常适合MFC初学者学习制作。2.2.2功能需求1.使用MFC编译的游戏,我们预计实现游戏的开始、暂停、继续、等级的提升、难度的增加。2.重要的MFC程序代码需求1)CWnd:窗口,它是大多数“

11、看得见的东西”的父类(Windows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,etc;一个例外是菜单(CMenu)不是从窗口派生的。2)CDocument文档,负责内存数据与磁盘的交互。最重要的是OnOpenDocument(读入),OnSaveDocument(写盘),Serialize(读写)3)CView视图,负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用CWnd:Invali

12、date()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。4)CDialog对话框5)CPen笔,画线6)CBrush刷子,填充7)CBitmap位图8)CRgn区域,指定一块区域可以用于做特殊处理。9)CString字符串。封装了C中的字符数组,非常实用。10)CPoint点,就是(x,y)对11)CRect矩形,就是(left,top,right,bottom)2.2.3游戏环境需求游戏要求(包括原始数据、技术参数、设计要求、图纸量、工作量要求等)(1) 操作系统:Windows NT Windows XP Windows7(2) 应用软件:Microsoft V

13、isual Studio 20102.2.4游戏界面需求(1)游戏说明界面:图2.1游戏说明界面(2)游戏开始界面:图2.2游戏开始界面(3)游戏运行界面图2.3游戏运行界面(4)游戏结束界面图2.4游戏结束界面2.3程序分析2.3.1游戏大体框架如下图所示开始游戏暂停游戏退出游戏继续游戏游戏控制模块重新开始图2.5游戏大体框架2.3.2主要游戏函数void CSnake2View:OnDraw(CDC* pDC)void CSnake2View:oninit(void)void CSnake2View:OnStart()void CSnake2View:OnPause()void CSnak

14、e2View:OnContinue()void CSnake2View:OnExit()void CSnake2View:OnIntroduce()void CSnake2View:OnRestart()void CSnake2View:OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)void CSnake2View:OnRButtonDown(UINT nFlags, CPoint point)void CSnake2View:OnTimer(UINT_PTR nIDEvent)2.3.3游戏程序整体间调用关系图InitSnake()DrawS

15、nake()设置自动移动定时器和增加食物定时器游戏开始CSnakeDlg:OnPaint()DrawFood ()桌面初始化初始化蛇头和蛇移动方向随机初始化一个食物到桌面SetTimer()CTable:AddFood()蛇移动蛇吃食?蛇增长继续?蛇死亡?桌面上随机生成食物MoveSnake ()AddSnake()退出程序是是否否OnGameStart()GameOver()TB_STATE_SBLOCK图3.6游戏程序关系图3程序设计3.1游戏教程的知识点1、 CView类中的消息响应2、 控件的消息响应3、 基于CView类内的具体游戏实现4、 数组5、 游戏图形的实现用CDC类实现。3

16、.2游戏基本流程和大体思想1、 定义蛇类和食物类,初始化贪吃蛇各项成员变量,包括图像的出现在屏幕的初始位置,长度,以及蛇的行走方向。食物类的定义包括出现的初始位置,以及食物是否被吃掉的判断。2、 用数组初始化长度为3的贪吃蛇,并且默认食物未出现3、 在CView类上运用MFC提供的Windows消息中WM_TIMER消息,运用OnTimer()函数让系统提供一个时钟节拍,更新游戏4、 具体游戏实现,包括蛇撞到自己和围墙都将使游戏结束,判断吃豆等,其中还包括根据蛇的速度和长度来进行游戏难度的改变。5、 具体键盘游戏操作运用到Windows消息响应中的WM_KEYDOWN,用OnKeyDown()

17、来响应玩家的实际操作。3.3游戏程序模块实现函数说明第一部分: 本版游戏的具体实现是在CViewl类中实现,所以其他类不用添加任何代码。由于此次贪吃蛇需要MFC的开发环境,所以打开Visual Studio2010新建一个MFC单文档工程,取名Snake2。然后单击菜单栏里的“项目”,找到“类向导”,单击打开,在类名中选择Snake2View添加以下Windows信息1 WM_KEYDOWN2 WM_RBUTTONDOWN3 WM_TIMER并且添加虚函数OnInitialUpdate()OnInitialUpdate()的功能如下:视图窗口完全建立后第一个被框架调用的函数。框架在第一次调用O

18、nDraw前会调用OnInitialUpdate,因此OnInitialUpdate是设置滚动视图的逻辑尺寸和映射模式的最合适的地方。时间上,两者先后顺序不同,构造函数生成本类的对象,但没有产生窗口,OnCreate后窗口产生,然后才是视图的OnInitialUpDate,一般在这里对视图的显示做初始化。简单点,就是ONCREATE只是产生VIEW的基本结构和变量而在OnInitialUpDate()中,主要初始化视图中控件等。对各个变量进行初始化操作所以我们要用这个函数来进行贪吃蛇的初始化工作。再者还要添加一个成员函数oninit()进行贪吃蛇外观的初始化。图3.1添加消息图3.2添加虚函数

19、再者是设计游戏的一些控件来控制“开始游戏” “结束游戏” 和“暂停游戏”“退出游戏”“重新开始”“游戏介绍”。我们可以点击“资源视图”然后找到“Menu”文件夹,选“IDR_MAINFRAME”进行控件的具体设计,这里我们在Menu文件夹中把“IDR_MAINFRAME”中默认的控件全部删除右键其中的标题栏,点击属性,会得到一个菜单栏标题,我们分别建立1个菜单栏标题。这里我们分别建“游戏操作”“游戏说明”。图3.3菜单栏标题点击并且在已有控件中的列表中点击属性,进行“菜单项目属性”的设置。我们本别建立的属性“标明”与对应的ID有A. 开始游戏ID_START B. 暂停游戏ID_PAUSE C

20、. 继续游戏ID_CONTINUED. 退出游戏ID_EXIT E. 重新开始ID_RESTART F. 游戏介绍ID_Introduce此处控件的设计是“可见即可得”的控件操作,成功设置ID之后 1、 右键“游戏开始”。2、 点击“添加事件处理程序”。3、 在Message Maps页面,在要进行消息响应的控件ID列表Object IDs中上选择对应的ID, 这里我们选择IDM_START,具体实现的环境是CView类,所以我们必须把“Class name”的默认“CMainFrame”改为“CView类”,并且在“Messages”类型设置中,用“COMMAND”设置为其为命令消息。其余各

21、项也按照同理进行设置。图3.4添加事件处理程序图3.5添加事件处理程序向导第二部分具体实现游戏、Step 1首先我们在文件“Snake2View.cpp”开头处分别定义 蛇 和食物 的全局变量struct Snake /蛇的全局变量int x,y;int len;int direct;Snake50;struct Food /食物的全局变量int x;int y;int isfood;Food;图3.6蛇与食物的全局变量接着把那窗口往下拉,找到”void CSnake2View:OnInitialUpdate()”,添加如下代码”void CSnake2View:OnInitialUpdate

22、()CView:OnInitialUpdate();Snake0.x=10;Snake0.y=10;Snake1.x=11;Snake1.y=10;Snake2.x=12;Snake2.y=10;Snake0.direct=3;Snake0.len=3;Food.isfood=1;/ TODO: Add your specialized code here and/or call the base class3.4程序变量声明代码说明一:1、 初始化贪吃蛇起初有3个节点,长度为3,起始坐标;食物默认为 1无0有。 2、 Step 2 找到类视图中的“CSnake2View”单击右键找到“属性”

23、,然后再属性栏里找到“消息”按钮,点击,然后在那里找到“WM_KEYDOWN”添加函数,然后回到Snake2View.cpp,添加代码如下:void CSnake2View:OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)switch(nChar)case VK_UP:if(Snake0.direct!=2)Snake0.direct=1;break; case VK_DOWN:if(Snake0.direct!=1)Snake0.direct=2;break;case VK_LEFT:if(Snake0.direct!=4)Snake0.dir

24、ect=3;break; case VK_RIGHT:if(Snake0.direct!=3)Snake0.direct=4;break; CView:OnKeyDown(nChar, nRepCnt, nFlags);3、 OnKeyDown函数的第一个参数 UINT nChar 是接收用户键入的信息,然后我们用switch进行选择判断代码说明二:1、 Snake0代表的是蛇头,我们对蛇头的方向Snake0.direct进行判断。case VK_UP:if(Snake0.direct!=2)Snake0.direct=1;break; 意思就是当Snake0.direct的方向此时并不等于“

25、下”的时候,才能做出“上”的操作动作,否则则忽略用户“向上”的操作按键效果2、 Step 3 用同样的方法对OnRButtonDown()具体添加代码如下:void CSnake2View:OnRButtonDown(UINT nFlags, CPoint point)CString str;str.Format(_T(%d,%d),point.x,point.y);AfxMessageBox(str);/ TODO: Add your message handler code here and/or call default这个函数功能是:用鼠标右键屏幕,就会马上显示当前位置的坐标信息。3、

26、 Step 4在同一窗口为“CSnake2View:oninit”添加void CSnake2View:oninit(void)CDC *pDC=GetDC();CBrush DrawBrush=(RGB(0,255,0);CBrush *Drawbrush=pDC-SelectObject(&DrawBrush);for(int i=0;iRectangle(Snakei.x*20,Snakei.y*20,(Snakei.x+1)*20,(Snakei.y+1)*20);pDC-SelectObject(DrawBrush);代码说明三:1、 利用Windows给我们提供的CDC类来进行画图

27、,我们首先用一个指向CDC类的指针去接受与该窗口相关联的DC句柄,然后用定义画刷一个DrawBrush对象,并且用RGB(0,250,0)来给画刷初始化颜色。且用electObject(&DrawBrush);函数把对象画刷选入到设备描述表中,用for循环依次把贪吃蛇的3个节点画出来。void far rectangle(int left, int top, int right, int bottom);这个函数的的功能根据函数功能:该函数画一个矩形,用当前的画笔画矩形轮廓,用当前画刷进行填充.2、 Step 5仍在同一视图,分别找到OnStart,OnPause,OnContinue,OnE

28、xit,OnRestart函数添加以下代码void CSnake2View:OnStart()SetTimer(1,3000,NULL);AfxMessageBox(_T(3秒后开始游戏!);/开始游戏void CSnake2View:OnPause()KillTimer(1);AfxMessageBox(_T(暂停游戏.);/暂停游戏void CSnake2View:OnContinue()SetTimer(1,10,NULL);/继续游戏void CSnake2View:OnExit() AfxMessageBox(_T(退出游戏.);exit(0);/退出游戏void CSnake2Vi

29、ew:OnRestart()CSnake2View:OnInitialUpdate();CSnake2View:oninit(); CSnake2View:OnStart();/重新开始3、 Step 6 对OnDraw()的添加代码OnDraw()函数众所周知视图类中的输出.视图类的输出基本上都是在视图类的OnDraw函数中处理的,系统会准备好入参,然后调用OnDraw函数,所以我们只需找到它,然后添加代码void CSnake2View:OnDraw(CDC* pDC)CSnake2Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc

30、)return;CBrush backBrush(RGB(0,50,250);CBrush* pOldBrush = pDC-SelectObject(&backBrush);CRect rect;pDC-GetClipBox(&rect);pDC-PatBlt(rect.left, rect.top, rect.Width(), rect.Height(),PATCOPY);pDC-SelectObject(pOldBrush);pDC-Rectangle(19,19,501,501);oninit();代码说明四:1、 此处是用画刷画一个背景,并且画出3个矩形区域2、 函数原型:int G

31、etClipBox(HDC hdc, LPRECT lprc);3、 该函数得到一个能够完包含当前可见区域的最小矩形的大小。 4、 函数原型:int nYLeft, int nWidth, int nHeight, DWORD dwRop);5、 该函数使用当前选入指定设备环境中的刷子绘制给定的矩形区域。6、 Step 7 一样是通过属性,在消息里找到“WM_TIMER”添加函数,然后返回“Snake2View.cpp”为该函数添加代码void CSnake2View:OnTimer(UINT_PTR nIDEvent)CDC *pDC=GetDC();CString soure;if(Sna

32、ke0.len=3)SetTimer(1,600,NULL);if(Snake0.len=6)SetTimer(1,400,NULL);if(Snake0.len=9)SetTimer(1,300,NULL);if(Snake0.len=11)SetTimer(1,200,NULL);if(Snake0.len=14)SetTimer(1,100,NULL);soure.Format(_T(得分%d!),(Snake0.len-3)*10);if(Snake0.x*20=20|Snake0.y*20=480|Snake0.y*20=480) KillTimer(1); AfxMessageBo

33、x(soure); if(Snake0.len3) for(int sn=Snake0.len-1;sn0;sn-) if(Snake0.x*20=Snakesn.x*20&Snake0.y*20=Snakesn.y*20) KillTimer(1); AfxMessageBox(soure); / pDC-SelectStockObject(WHITE_PEN); pDC-Rectangle(SnakeSnake0.len-1.x*20,SnakeSnake0.len-1.y*20,(SnakeSnake0.len-1.x+1)*20,(SnakeSnake0.len-1.y+1)*20);

34、 for(int i=Snake0.len-1;i0;i-) Snakei.x=Snakei-1.x; Snakei.y=Snakei-1.y; if(Snake0.direct=1)Snake0.y-; if(Snake0.direct=2)Snake0.y+; if(Snake0.direct=3)Snake0.x-; if(Snake0.direct=4)Snake0.x+;? pDC-SelectStockObject(BLACK_PEN); CBrush DrawBrush=(RGB(255,0,0);CBrush *Drawbrush=pDC-SelectObject(&DrawB

35、rush); pDC-Rectangle(Snake0.x*20,Snake0.y*20,(Snake0.x+1)*20,(Snake0.y+1)*20); pDC-SelectObject(DrawBrush); if(Snake0.x*20=Food.x*20&Snake0.y*20=Food.y*20) Snake0.len+; Food.isfood=1; SnakeSnake0.len-1.x=SnakeSnake0.len-2.x; SnakeSnake0.len-1.y=SnakeSnake0.len-2.y; if(Food.isfood=1) srand(unsigned)t

36、ime(NULL); do for(int isfo=Snake0.len-1;isfo=0;isfo-)if(Snake0.x*20=Snakeisfo.x*20&Snake0.y*20=Snakeisfo.y*20) Food.x=rand()%20; Food.y=rand()%20; while(Food.x*2070|Food.y*20430|Food.y*20430);pDC-Rectangle(Food.x*20,Food.y*20,(Food.x+1)*20,(Food.y+1)*20); Food.isfood=0; CView:OnTimer(nIDEvent);代码说明五

37、:1、 切换到“资源视图”,展开节点,找到“Dialog”并在此节点上单击鼠标右键,在弹出的快捷菜单中选“插入对话框”。2、 然后创建对话框的类,方法是打开类向导,单击“添加类”按钮,在弹出的MFC类向导对话框中的“类名”文本框中输入“CIntroduceDialog”,在基类下拉列表中选择“Cdialog”,在对话框下拉列表中输“IDIntroduce”,单击完成按钮,对话框类创建完毕。3、 接着在对话框里添加游戏的介绍,然后在“Snake2View.cpp”中加入头文件“#include”IntroduceDialog.h”然后往下拉,找到”void CSnake2View:OnIntro

38、duce()“添加代码void CSnake2View:OnIntroduce()CIntroduceDialog introduce;introduce.DoModal();/游戏介绍4 系统实现4.1坐标位置信息模块实现void CSnake2View:OnRButtonDown(UINT nFlags, CPoint point)CString str;str.Format(_T(%d,%d),point.x,point.y);AfxMessageBox(str);/ TODO: Add your message handler code here and/or call default

39、4.2键盘方向键操作模块实现void CSnake2View:OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)switch(nChar)case VK_UP:if(Snake0.direct!=2)Snake0.direct=1;break; case VK_DOWN:if(Snake0.direct!=1)Snake0.direct=2;break;case VK_LEFT:if(Snake0.direct!=4)Snake0.direct=3;break; case VK_RIGHT:if(Snake0.direct!=3)Snake0.di

40、rect=4;break; CView:OnKeyDown(nChar, nRepCnt, nFlags);4.3蛇身撞界与分数计算模块实现soure.Format(_T(得分%d!),(Snake0.len-3)*10); if(Snake0.x*20=20|Snake0.y*20=480|Snake0.y*20=480) KillTimer(1); AfxMessageBox(soure); if(Snake0.len3) for(int sn=Snake0.len-1;sn0;sn-) if(Snake0.x*20=Snakesn.x*20&Snake0.y*20=Snakesn.y*2

41、0) KillTimer(1); AfxMessageBox(soure); 4.4食物重新生成模块实现if(Food.isfood=1) srand(unsigned)time(NULL); do for(int isfo=Snake0.len-1;isfo=0;isfo-)if(Snake0.x*20=Snakeisfo.x*20&Snake0.y*20=Snakeisfo.y*20) Food.x=rand()%20; Food.y=rand()%20; while(Food.x*2070|Food.y*20430|Food.y*20430);pDC-Rectangle(Food.x*2

42、0,Food.y*20,(Food.x+1)*20,(Food.y+1)*20); Food.isfood=0; 4.5游戏测试以下是部分游戏视图:图4.1游戏开始运行 图4.2游戏结束5 总结在开始着手编程之前,我以为编个小游戏很简单,但是当我深入思考后发现,并不是自己想象的那么简单,虽然不是什么难度很大的算法,但是程序要考虑的问题很多,相当复杂,需要考虑的很全面,不然就打不到预期的效果。深入思考碰壁后,我在VC+课本上找到了灵感,把课本上的小程序仔细研究调试之后,终于弄清楚了其中的奥妙。通过此次贪吃蛇游戏的设计,确实学到了很多实战的经验。以前只是纸上谈兵,真正下起手来才发现自己其实对C+语言还没有掌握到编程的程度。开始编译之后,自己通过与同学交流,查阅资料,独立的编写出了游戏代码,并进一步优化,加强可操作性,从中得到了很多课上没有的知识,体会到了编程的快乐,也许,编程就是,由简单到复杂,由复杂到简单。刚开始时,一直失败,好多错误,其实就是些基本的错误,比如变量的定义,整型变量的范围,结构体的运用,指针的定义,函数的调用等等,通过这些问题才发现自己学习的知识是那么不牢固。再有就是些技术上的难题,比如画图函数,初次接触,需要去查阅运用。这次实习不仅仅锻炼了我的VC+编程能力,同时让

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服