版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VC 俄罗斯方块毕业论文专专 业:业:计算机科学与技术摘要摘要 俄罗斯方块是大多数人都熟悉的一款游戏,它玩法简单,乐趣无穷,一直深受各年龄层的玩家喜爱,经久不衰。而计算机和网络的发展给于了它更大的发展空间。本设计的主要目的是通过使用 VISUAL C+进行设计,详细介绍了基于 API 的俄罗斯方块系统的开发过程。内容包括:Visual C+的特点,系统可行性研究,功能分析,总体设计和详细设计。通过本文读者了解整个俄罗斯方块的开发过程,同时本次设计也可以作为系统再开发时的参考。关键词:俄罗斯方块;游戏;VC ABSTRACTThe Tetris is a game that most peopl
2、e are familiar with。 Its playing method is simple, full of endless joy, well received by the players of all ages all the time, unfailing. And the development of the computer and network is given on bigger development space of its. This design main purpose is through uses VISUAL C+ to carry on the de
3、sign,Introduced in detail based on the API Tetris system performance history. The content includes: Visual C+ characteristic,System feasibility study, functional analysis, system design and detailed design. Through this article reader understood entire the performance history of Tetris, simultaneous
4、ly this design also may develops again as the system when the reference.Keywords:Tetris;Game;VC目录摘要.IABSTRACT.II目录.31 绪论 .51.1 课题背景 .5介绍 .51.3 API 简介 .61.4 本章小结 .72 可行性研究与需求分析.82.1 可行性研究 .82.2 需求分析 .82.3 本章小节 .93 系统的总体设计.103.1 总体功能分析 .103.2 系统功能分析 .10功能模块简介 .11本章小结 .114 系统的具体实现.12游戏基本逻辑控制 .124.2 菜单命
5、令的代码设计 .214.3 本章小结 .24结论.25参考文献.26致谢.27前言俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人 Alex Pajitnov 制作的,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。俄罗斯方块是大多数人都熟悉的一款游戏,它玩法简单,乐趣无穷,一直深受各年龄层的玩家喜爱,经久不衰。而计算机和网络的发展给于了它更大的发展空间,单机版与网络版俄罗斯方块游戏也一直深受人们的喜爱, 经调查,俄罗斯方块在各种版本的游戏领域一
6、直占据着重要地位,这就使得这款游戏的意义更加重要。本设计的主要目的是通过使用 Visual C+进行设计,详细介绍了基于 API 的俄罗斯方块系统的开发过程。内容包括:Visual C+的特点,系统可行性研究,功能分析,总体设计和详细设计。 该俄罗斯方块游戏主要实现以下功能:1. 每四个小方块可组合成一个方块群。2从七个方块群中,随机取一组,并且告诉玩家下一组方块是什么。3在游戏框中方块由上方慢慢落下。4玩家可以按【】 、 【】移动方块,按【】加速方块落下的速度,按【】 、空格键旋转方块,所有的方块都要在游戏框中。5方块落下是,当方块组中由一个到达游戏框最底或是下一格有方块时即停止移动,净将方
7、块移到游戏框底。6如果同一行的 10 格中全部填满小方块,即可消除该行,上面的方块以行为单位,由上一行一行一行往下移。7消除的行数越多,落下的速度越快。8如果有方块停住时有方块未在游戏框内,游戏结束。9游戏能够在玩的时候给出分数、速度和级别。1 绪论1.1 课题背景作为一款极为经典的游戏,俄罗斯方块吸引一代代玩家乐此不彼,本例通过使用 VISUAL C+进行设计,大量使用了 API 函数,将书本知识应用到实际程序中,以便于为以后的进一步学习奠定基础。1.2 VISUAL C+介绍作为一种 C/C+语言的集成开发环境(IDE),产生 VC 的最早的根源其实要追溯到 DOS 时代的 Borland
8、 公司,当初 Borland 公司开发的 Turbo Pascal 和 Turbo C让程序员们深刻感受到了把编辑器和编译器集成在一起的 IDE 是多么的方便,微软也看到了这一优点,于是相继开发了 Quick C 和 Microsoft C/C+等多个 DOS 版本的C/C+集成开发工具。随着 Windows 的不断成熟,微软决定放弃 DOS 下的开发工作,正式推出了 Windows 下的,早期的 VC 功能并不什么强大,使用起来也不方便,版和版都是 16 位编程工具。VC 的革命性改变得益于 Windows 95 的推出,从开始,微软又放弃了 16 位编程,以后的 VC 都只用于 32 位编
9、程开发,为了与 MFC 类库的版本号保持一致,微软跳过了版本 3,直接推出 VC ,这个版本及修订版的部分界面风格一直被保留到最新的中。从 VC4 到 VC6,VC 的各种功能不断增强,MFC 类库的内容也越来越丰富,现在利用 VC 开发应用程序已经是一件相当轻松的事情了。现在的 C+ Builder 也是一个非常优秀的开发工具,但是基于下面的几点原因,使用 VC 更为现实:首先,VC 的核心MFC 类库已是事实上的业界标准;其次,VC与 Visual Studio 中的其它可视化开发工具紧密集成,可用于开发非常专业的Windows、Web 和企业级应用程序;第三,VC 的联机帮助已被集成到
10、MSDN(微软开发者网络)库中去了,后者包含了微软大部分产品的技术文档和支持资料,内容相当丰富,是程序员不可多得的参考资料,现在 MSDN 库随着一起发行,实在是大家的福音。在 Windows 版本系列中,下列特点是始终保持并不断发展的:图形化的窗口界面。多任务方式的运行环境。虚拟化的设备接口。以虚拟内存为核心的内存管理。网络功能及应用程序,包括 Microsoft 网络、通用基础网络协议等。多媒体功能及应用程序,包括图形、图像、声音、动画和开发工具等。功能丰富的用户管理工具和实用软件。目前 VC 的最新版本是 VC6,属于微软可视化开发套件中的一项重头戏。VC6 引入了多项出色的新功能,例如
11、智能感应(IntelliSense)技术,程序员在键入代码时,VC6 的编辑器能自动把属性、参数信息、数据类型信息、代码信息罗列出来,供程序员选择并自动完成输入,这种技术源自于 VB5,现在已被应用到了 VC6、VJ6 和IE5 中,有了它之后,程序员无需去记忆复杂的语法、参数和构件属性,从而提高了编程效率。另一项典型的新技术是即编即调(Edit and Continue),现在程序员可以直接在调试过程中编辑代码,而不用象以前那样,需要先退出调试状态,然后编辑,重新编译连接,并启动调试器,再跟踪到发生问题的地方。此外,VC6 还具有动态更新类视图、延迟加载、支持通用控件等等众多的新特性。作为当
12、今流行的开发环境,Visual C+6.0 具有如下特点:(1)Visual C+6.0 提供了开发 Windows 环境下的应用程序的简捷、快速和实用的开发环境。利用 Visual C+6.0 开发 Windows 应用程序具有很高的效率。(2)Visual C+6.0 提供了 MFC 类库,开发者只需要做少量的工作就可以得到功能齐全的 Windows 应用程序。(3)Visual C+6.0 提供了高度集成的工具集,使得在开发应用程序的全过程中都保证了较高的效率。集成化便于程序开发,开发者可以在诸如编辑、建立、调试等不同的任务之间快速切换,甚至可以同时进行。(4)图形化的可视特点使得 Vi
13、sual C+6.0 简单易学。1.3 API 简介微软 windows 应用程序应用程序接口(Application Programming Interface ,API)是为开发者在开发 windows 应用程序时,提供给应用程序的接口程序,包括Windows XP,Windows 2000,Windows NT,Winows 95/98,以及 Windows ME.windows API 可以被用在所有的以 windows 为平台的应用程序下面不管是 32 位的或是 64 位的Windows 系统通常会支持相同的功能函数。虽然随着软件技术的不断发展,在 WINDOWS 平台上出现了很多优
14、秀的可视化编程环境,程序员可以采用“即见即所得”的编程方式来开发具有精美用户界面和功能强大的应用程序。但是如果我们要开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接使用 API 函数,虽然类库和控件使应用程序的开发简单的多,但它们只提供 WINDOWS 的一般功能,对于比较复杂和特殊的功能来说,使用类库和控件是非常难以实现的,这时就需要采用 API 函数来实现。API 函数是构筑整个Windows 框架的基石,只有充分理解和利用 API 函数,才能深入到 Windows 的内部,充分发挥各种 32 位平台的强大功能和灵活性,才能成功地扩展和突破类库、控件和可视开发环境的限制。所有在
15、Win32 平台上运行的应用程序都可以调用这些函数。使用 Win32 API,应用程序可以充分挖掘 Windows 的 32 位操作系统的潜力。 Mircrosoft 的所有 32 位平台都支持统一的 API,包括函数、结构、消息、宏及接口。使用 Win32 API 不但可以开发出在各种平台上都能成功运行的应用程序,而且也可以充分利用每个平台特有的功能和属性。 在具体编程时,程序实现方式的差异依赖于相应平台的底层功能的不同。最显著的差异是某些函数只能在更强大的平台上实现其功能。例如,安全函数只能在Windows NT 操作系统下使用。另外一些主要差别就是系统限制,比如值的范围约束,或函数可管理
16、的项目个数等等。根据 Windows API 函数完成的功能,可将其分为三类:窗口管理函数:实现窗口的创建、移动和修改功能。图形设备接口(Graphics Device Interface,GDI):实现与设备无关的图形操作功能。系统服务函数:实现与操作系统有关的各种功能。1.4 本章小结本章介绍了软件开发环境 VISUAL C+的基础性知识,同时简要介绍了 WINDOWS API 函数的一些知识,这些知识有助于接下来整个俄罗斯方块游戏的开发与设计。在用 Visual C+开发面向对象应用程序时,主要有两种方法:一种是使用 Windows 提供的 API 函数,另一种方法是直接使用 Micro
17、soft 提供的 MFC 类库。本次设计使用第一种方法。2 可行性研究与需求分析 2.1 可行性研究问题定义的可行性分析是软件生存周期的第一阶段。可行性研究的目的是使用最少的代价在尽可能短的时间内确定问题是否能够解决。可行性研究的实质是要进行一次系统分析和设计的简化过程,也就是在较高层上以抽象的方式进行系统分析和设计的过程。一般来讲,应该从技术、经济和操作等方面来研究每种解法的可行性。.要求 作为一款极为经典的游戏,俄罗斯方块吸引一代代玩家乐此不彼,本例通过使用 VISUAL C+进行设计,大量使用了 API 函数,将书本知识应用到实际程序中,以便于为以后的进一步学习奠定基础。本例要求大量使用
18、 API 函数,熟悉消息映射机制的具体实现。2.1.2 目标 俄罗斯方块游戏的设计目标完成一个比较简单的游戏,使之能够实现俄罗斯方块游戏的基本功能,成为一个比较完整的游戏框架。该游戏作为一个单机版的游戏界面,基本达到俄罗斯游戏的基本功能。通过练习能进一步学习 API 函数的使用。 可行性研究方法 实行软件的可行性研究方法主要有:成本效益分析,对估算问题的看法,软件的作用范围,软件的成本估算,速度安排等。 决定可行性的主要因素 决定软件可行性的四个主要方面有:经济因素,技术因素,法律因素,不同方案。由于该游戏本身的规模不大,几乎可以在所有的计算机系统上运行,所以对于硬件和软件没有太苛刻的要求,各
19、种游戏平台,大型电脑、家用游戏机等,甚至连掌上型的小游戏机都可以运行。2.2 需求分析 俄罗斯方块是一个脍炙人口的游戏,所以我们大家对它都很是熟悉,现在的要求是尽量设计一个合格的俄罗斯方块游戏。作为一个广受关注的游戏,现在有大量的关于俄罗斯方块的资料,我尽量吸取已有的成功的经验,做到精益求精。2.3 本章小节本章分析了当前开发本系统的形式,并介绍了对计俄罗斯方块游戏系统的可行性研究的前提及对该系统的需求分析。3 系统的总体设计总体设计过程首先是寻找实现目标系统的各种不同的方案。要进行系统完善的总体功能分析,首先要确定俄罗斯方块游戏中的不同模块,鉴于 API 编程的不同,我尽量用比较清晰的思路表
20、达意图。根据此系统的功能要求,除了要保持整体设计的统一性,还要突出不同模块的特点,使整个系统趋于统一。3.1 总体功能分析总体设计过程通常由两个主要阶段组成:系统设计阶段和结构设计阶段。尽量利用现有的软硬件环境,采用 Viusal C+进行俄罗斯方块的设计,由于 API函数在 Windows 设计中的重要性,需要大量使用到 API 函数,一定程度上增加了难度。3.2 系统功能分析系统功能分析是在系统开发的总体任务的基础工业上完成的。该俄罗斯方块游戏主要实现以下功能:1. 从七个方块群中,随机取一组,并且告诉玩家下一组方块是什么。2. 在游戏框中方块由上方慢慢落下。3. 玩家可以按【】 、 【】
21、移动方块,按【】加速方块落下的速度,按【】 、空格键旋转方块,所有的方块都要在游戏框中。4. 方块落下是,当方块组中由一个到达游戏框最底或是下一格有方块时即停止移动,净将方块移到游戏框底。5. 如果同一行的 10 格中全部填满小方块,即可消除该行,上面的方块以行为单位,由上一行一行一行往下移。6. 消除的行数越多,落下的速度越快。7. 如果有方块停住时有方块未在游戏框内,游戏结束。8. 游戏能够在玩的时候给出分数、速度和级别。主菜单开始退出开始暂停开始结束开始图 3.1 控制流程功能模块简介 由于俄罗斯方块游戏的相对简单,我们将在下一章中具体实现。3.4 本章小结本章介绍了俄罗斯方块游戏系统的
22、总体设计方案,详细说明了系统实现的功能以及整个系统的流程分析,并以功能模块图的形式体现出来。 4 4 系统的具体实现系统的具体实现游戏基本逻辑控制使用 API 函数编写游戏,首先生成一个应用程序框架,游戏的框架采用标准的windows 框架,上面有标题栏、菜单栏,以方便玩家控制游戏,我们先做好这一部分。菜单栏里包括开始、暂停、结束等控制菜单。我们要设计对菜单操作进行响应,并设计相应的控制游戏,这是需要添加对菜单事件的响应方法。然后在一个面板上构建游戏的界面,将这个面板嵌入到游戏的大框架中,这样游戏的界面就有了。在游戏面板构建好之后,应该让游戏能够玩起来,这一部分主要是编写一些算法,用来控制游戏
23、。这里需要增加对键盘事件的响应,让玩家能够玩游戏。 显示背景在 Visual C+中,使用 Visual C+自带的方法可以读取并显示位图文件。使用 API 函数的画刷和画笔函数创建画刷和画笔句柄,然后创建一个矩形区域作为俄罗斯方块游戏的执行区域(选择黑色背景和红色方块,以便于区分) 。主要使用到的 API 函数有:GetDC(HWND) 获取设备句柄int ReleaseDC(HWND,HDC)由 GetDC()获取的设备环境必须用 ReleaseDC()函数释放SelectObject(HDC,HWND)应用程序将使用句柄 HWND 所指的设备进行绘图,直到选入另外的设备为止。使用时一般需
24、要在函数前进行强制类型转换,设定为 CPEN、CBRUSH 等。BitBlt(int,int,int,int,CDC,int,int,DWORD)CDC:BitBlt 执行的操作为将源 DC 中位图复制到目的 DC 中。其中前四个参数为目的区域的坐标(x,y)及长度和宽度(Width, nHeight) ,第五个参数是源 DC 指针,接下来的参数是源 DC 中的起始坐标,最后一个参数为光栅操作的类型。BOOL Rectangle(HDC hdc,int x1,int y1,int x2,int y2)使用当前画笔绘制一个举行区域,并使用当前画刷进行填充。.2 方块的显示与控制俄罗斯方块游戏中的
25、基本方块有 7 种,可以通过编写一个结构来存储和显示这些方块。具体代码如下:typedef struct struct_fPoint /点坐标 float x; float y;FPOINT,*PFPOINT;typedef struct struct_Object /方块结构 int type; FPOINT center; FPOINT pos4;OBJECT,*POBJECT;各种形式的方块组组合如下:/实现方块组 pObj-pos0.x=sx;pObj-pos0.y=0;pObj-pos1.x=sx+1;pObj-pos1.y=0;pObj-pos2.x=sx;pObj-pos2.y=
26、1;pObj-pos3.x=sx+1;pObj-pos3.y=1;pObj-center.x=0.5;pObj-center.y=0.5;/实现方块组pObj-pos0.x=sx;pObj-pos0.y=0;pObj-pos1.x=sx;pObj-pos1.y=1;pObj-pos2.x=sx+1;pObj-pos2.y=1;pObj-pos3.x=sx+1;pObj-pos3.y=2;pObj-center.x=sx+1;pObj-center.y=1;/实现方块组pObj-pos0.x=sx+1;pObj-pos0.y=0;pObj-pos1.x=sx;pObj-pos1.y=1;pObj
27、-pos2.x=sx+1;pObj-pos2.y=1;pObj-pos3.x=sx;pObj-pos3.y=2;pObj-center.x=sx;pObj-center.y=1;/实现方块组 pObj-pos0.x=sx;pObj-pos0.y=0;pObj-pos1.x=sx+1;pObj-pos1.y=0;pObj-pos2.x=sx+1;pObj-pos2.y=1;pObj-pos3.x=sx+1;pObj-pos3.y=2;pObj-center.x=sx+1;pObj-center.y=1;/实现方块组 pObj-pos0.x=sx+1;pObj-pos0.y=0;pObj-pos1
28、.x=sx;pObj-pos1.y=0;pObj-pos2.x=sx;pObj-pos2.y=1;pObj-pos3.x=sx;pObj-pos3.y=2;pObj-center.x=sx;pObj-center.y=1;/实现方块组 pObj-pos0.x=sx;pObj-pos0.y=0;pObj-pos1.x=sx;pObj-pos1.y=1;pObj-pos2.x=sx;pObj-pos2.y=2;pObj-pos3.x=sx+1;pObj-pos3.y=1;pObj-center.x=sx;pObj-center.y=1;/实现方块组 pObj-pos0.x=sx;pObj-pos0
29、.y=0;pObj-pos1.x=sx;pObj-pos1.y=1;pObj-pos2.x=sx;pObj-pos2.y=2;pObj-pos3.x=sx;pObj-pos3.y=3;pObj-center.x=sx;pObj-center.y=2;4.1.2.1 创建方块首先用随机函数定义七种不同的方块组合,然后通过分支语句 switch 决定出现的方块组的具体形式。关键代码如下:void CreateObj(POBJECT pObj)srand(:GetTickCount();pObj-type=rand()%7;switch(pObj-type)使用的 API 函数如下:WINBASEA
30、PI DWORD WINAPI GetTickCount(VOID);GetTickCount 返回(retrieve)从操作系统启动到现在所经过(elapsed)的秒数,该函数,winbase.h 已被包含进 windows.h 头文件中,所以要使用GetTickCount 只需包含 windows.h 就可以了。void srand(int a) void srand(int a)功能是初始化随机产生器,从而产生比较分散的伪随机数,即 rand()函数的初始值,即使把种子的值改成 a。 从这你可以看到通过 sand()函数,我们是可以产生可以预见的随机序列;如何我们想产生不可预见的随机序列
31、,我们利用 srand(unsign)(time(NULL)是一种方法,因为每一次运行程序的时间是不同的int rand(void); 该函数包含在头文件中,调用时随机产生一个 0 到 RAND_MAX 之间平均分布的整数,RAND_MAX 是一个常量(定义为:#define RAND_MAX 0 x7fff) 。4.1.2.2 产生新的方块 在判断可以产生下一组方块的时候,程序将产生下一组方块,关键代码如下:void GetNextObj()BOOL isDead=FALSE; /假设未结束for(int i=0;i4;i+)if(Ev(int) CurObj.posi.x(int)CurO
32、bj.posi.y)isDead=TRUE;if(isDead) /游戏结束EndGame();CreateObj(&NextObj);使用的 API 函数有:void *memcpy( void *dest, const void *src, size_t count );该函数包含在头文件,该函数返回源地址的指针。三个参数中, dest 表示新缓冲区地址,src 表示源缓冲区地址,count 表示源缓冲区大小,该函数拷贝 count 指定的源缓冲区的字节到目的缓冲区.如果源和目的地址重复,该函数不能保证重复的区域里最初的源地址的字节在覆盖前被拷贝.4.1.2.3 在右上角显示下一个
33、产生的方块该段代码的主要作用是帮助玩家判断下一个出现的方块组合,以便在游戏处理上作出更有力的判断。主要的设计思想是设定模式,得到下个方块组的产生信息,调用不同的设备完成设备初始化,然后在右上角实现要求。关键代码如下:void DrawNext()SetBkMode(hdc,TRANSPARENT);HPEN hNull = CreatePen(PS_NULL,1,0);HPEN hOldPen = (HPEN)SelectObject(hdc,hNull);HBRUSH hGrayBrush = (HBRUSH)GetStockObject(GRAY_BRUSH) ;HBRUSH hOldBr
34、ush = (HBRUSH)SelectObject(hdc,hGrayBrush);SetTextColor(hdc,RGB(255,0,0);TextOut(hdc,xStart,10,下一个,6);for(int i=0;i=MAXY) /可以消去 for( int n=0;n4;n+) Ev(int)CurObj.posn.x(int)CurObj.posn.y=1; SetCruObjZero(); DelDieLine(); GetNextObj(); DrawSence(); DrawNext(); DrawInfo(); return; for(i=0;i4;i+) /如果可以
35、降落 CurObj.posi.x=tempi.x;CurObj.posi.y=tempi.y; CurObj.center.y+=1; DrawSence(); return;.5 方块移动的算法关键代码如下:void Move(int step) for(i=0;i4;i+) CurObj.posi.x=tempi.x;CurObj.posi.y=tempi.y; CurObj.center.x+=step; DrawSence(); return;4.1.2.6 实现方块翻转 方块翻转是俄罗斯方块游戏中最为关键的一步,我们首先设定一个临时变量,如果下落的方块组是 O 型,可以不用翻转。如果
36、不是 O 型,可以对方块组的坐标进行技术处理。当然如果方块在游戏区域边缘无法实现翻转的情况也应该考虑到。翻转算法中最关键的因素是以方块组为基准旋转,计算新的位置。代码如下:void Flip()for(i=0;i4;i+) cx=CurObj.posi.x-CurObj.center.x;cy=CurObj.center.y-CurObj.posi.y;tempi.x=CurObj.center.x+cy;tempi.y=CurObj.center.y+cx;if(Ev int (tempi.x) int(tempi.y) )/Can not Flip return;if(tempi.x=MA
37、XX) return;if(tempi.y=MAXY) return; for(i=0;i4;i+) CurObj.posi.x=tempi.x;CurObj.posi.y=tempi.y; DrawSence(); return;4.1.2.7 方块消去首先判断方块能否进行消去,然后使用消去算法将能消去一行或数行方块消去,同时刷新工作区。这个方法的算法是这样的:先遍历每一行,对每一行都进行检查是不是已经填满了方块,如果已经填满了方块,则上面的方块都整体往下移动一格。关键代码如下:void DelDieLine() int isDead=1; /判断消去的条件 int DieCount=0;
38、for(int i=0;i=0;i-) isDead=1;for(int j=0;j=NextScore) /对于高手提高速度 speed+; if(speed=15) speed=0; dtime=timespeed; DrawInfo(); NextScore+=10000; Count+; int DestLine; for(i=DieCount-1;i=0;i-) for(DestLine = DieLinei;DestLine0;DestLine-) for(int j=0;jMAXX;j+) EvjDestLine=EvjDestLine-1; 菜单命令的代码设计开始游戏只要在方法
39、中先定义一个线程,然后让这个线程开始运行就可以了。当然还应该注意重新给一些变量赋值,如游戏的分数、游戏的级别、方块下落的速度等。所有的组件准备好后,开始进行游戏环境的初始化工作,让玩家可以随时开始游戏。开始菜单的执行界面如下图:初始化的代码如下:void BeginGame() .for(int i=0;iMAXX;i+) for(int j=0;jMAXY-level;j+) Evij=0;for(i=0;iMAXX;i+) for(int j=MAXY-level;j=0;i-) for(int j=0;jMAXX;j+) Evji=1; for(j=0;j19;j+) DrawSence
40、(); for(i=0;iMAXY;i+) for(int j=0;jMAXX;j+) Evji=0; for(j=0;j19;j+) DrawSence(); 本章小结本章介绍了俄罗斯方块的具体设计与实现,详细的阐明了本系统的设计思想,描述了设计中的一些编程思想,并利用插入图片的形式展示了部分系统的设计界面。完成整个设计后的程序主界面如下:结论结论随着俄罗斯方块系统的开发完成,本系统中预期的主要功能也基本实现。本系统以开发工具,使用 Windows 提供的 Windows API 函数实现。本论文阐述了俄罗斯方块系统的分析与设计的全过程,并在论文中相应的位置插入了图片、系统设计流程图以及一些
41、编程思想代码,更加清晰的描了该系统是如何实现的。经过三个多月的设计,其功能基本符合要求,能够完成预定的开始游戏、暂停游戏、结束游戏、显示下一个产生的方块组、计算成绩和显示速度等功能。通过毕业论文的撰写,我获益最大的就是能够锻炼了能多个角度的看待、处理问题,科学的整理和分析所学的专业知识,提炼成一种思想。论文的撰写,使我对此系统的开发和完善有了更科学系统的详细总结,我相信这对我日后的学习和工作将产生巨大的影响。由于毕业设计时较短,对 Visual C+中的很多知识还没有了解和掌握,在俄罗斯方块系统中有些功能还不够完善,该系统还有许多不尽如人意的地方,比如用户界面不够美观、没有快捷键实现、俄罗斯方
42、块组颜色单一等问题,这些都有进一步改善。参考文献1 Visual C+游戏编程导学 【M】杨正华 张秋生 编著 清华大学出版社2 Java 游戏编程导学 【M】陆光义 宋现锋 编著 清华大学出版社3 Visual Basic+游戏编程导学 【M】杨正华 编著 清华大学出版社4 Visual C+面向对象与可视化程序设计【M】黄维通 编著 清华大学出版社5 Visual C+6.0 实用教程【M】孙雄勇 编著 清华大学出版社6 游戏编程基础【M】 荣钦科技 编著 电子工业出版社7 深入浅出 MFC 【M】候俊杰 编著 华中科技大学出版社8 深入剖析 Visual C+【M】 求是科技 编著 人民
43、邮电出版社9 数字图像编码 丁贵广 计文平等 编著 机械工业出版社10 程序设计 朱晴婷等 编著 清华大学出版社11 Visual C+游戏开发技术与实例 丁展生 人民邮电出版社12 轻松进阶 王岚波 译 电子工业出版社13 Visual C+实用教程 刘惊雷 编著 电子工业出版社14 编程案例精解 张宏军等 电子工业出版社15 软件工程使用教程 陈明 编著 电子工业出版社16 软件工程导论 张海蕃 编著 清华大学出版社17 C+程序设计 钱能 编著 清华大学出版社致谢在设计过程中由于我的知识浅薄,经验不足,因此,在该系统的设计方面还有很多不足,比如功能过少,界面不够美观等问题,我会在软件的使
44、用过程中,不断地进行修改、完善,争取使该系统慢慢趋向完美。在本系统的设计过程和论文编写过程中,很多老师、同学和朋友都给予了我许多无私的帮助,尤其是指导老师给我的论文提出了很多宝贵的修改意见,在这里,我向这些无私帮助我的人表示衷心的感谢。在此次毕业设计中,老师对我严格要求、耐心教导,使我顺利完成了设计,并帮我将所学的知识融会贯通、综合应用,特在此表示衷心的感谢!09/20 11:46 102 机体齿飞面孔双卧多轴组合机床及 CAD 设计09/08 20:02 3kN 微型装载机设计09/20 15:09 45T 旋挖钻机变幅机构液压缸设计08/30 15:32 5 吨卷扬机设计10/30 17:
45、12 C620 轴拨杆的工艺规程及钻 2-16 孔的钻床夹具设计09/21 13:39 CA6140 车床拨叉零件的机械加工工艺规程及夹具设计 83100308/30 15:37 CPU 风扇后盖的注塑模具设计09/20 16:19 GDC956160 工业对辊成型机设计08/30 15:45 LS 型螺旋输送机的设计10/07 23:43 LS 型螺旋输送机设计09/20 16:23 P-90B 型耙斗式装载机设计09/08 20:17 PE10 自行车无级变速器设计10/07 09:23 话机机座下壳模具的设计与制造09/08 20:20 T108 吨自卸车拐轴的断裂原因分析及优化设计09
46、/21 13:39 X-Y 型数控铣床工作台的设计09/08 20:25 YD5141SYZ 后压缩式垃圾车的上装箱体设计10/07 09:20 ZH1115W 柴油机气缸体三面粗镗组合机床总体及左主轴箱设计09/21 15:34 ZXT-06 型多臂机凸轮轴加工工艺及工装设计10/30 16:04 三孔连杆零件的工艺规程及钻 35H6 孔的夹具设计08/30 17:57 三层货运电梯曳引机及传动系统设计10/04 13:45 五吨单头液压放料机的设计10/04 13:44 五吨单头液压放料机设计09/09 23:40 仪表外壳塑料模设计09/08 20:57 传动盖冲压工艺制定及冲孔模具设计09/08 21:00 传动系统测绘与分析设计10/07 23:46 保护罩模具结构设计09/20 15:30 保鲜膜机设计10/04 14:35 减速箱体数控加工工艺设计10/04 13:20 凿岩钎具钎尾的热处理工艺探索设计09/08 21:33 分离爪工艺规程和工艺装备设计10/30 15:26 制定左摆动杠杆的工工艺规程及钻 12 孔的夹具设计10/29 14:0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届河北省迁西一中高考适应性考试数学试卷含解析
- 2025届云南省西南名校高三第五次模拟考试语文试卷含解析
- 山西省忻州市忻府区忻州一中2025届高三第五次模拟考试英语试卷含解析
- 总工会工作总结和2024年工作计划
- 药材公司工作计划
- 大学生新学期开学学习计划
- 2024年度医院工作计划行政工作计划
- 疫情过后中班教学计划
- 各年龄段德育教育工作计划文档
- 2024年一年级班班级工作计划范文
- 人工智能及其应用5课件
- SHL领导力测评题库
- 电动汽车充电站员工入职培训
- 海南省2022-2023学年高一上学期期末学业水平诊断(一)数学试题
- 新媒体运营推广策划方案
- 双T板吊装施工专项方案
- 自媒体运营职业生涯规划书
- 临床护理科研存在的问题与对策
- 40道性格测试题及答案
- 2024届高考语文二轮专题复习与测试第二部分专题四文言文阅读精准突破五主观问答题课件
- 中石油昆仑好客加油站便利店基础知识
评论
0/150
提交评论