已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ABSTRACT 摘要摘要 俄罗斯方块是大多数人都熟悉的一款游戏,它玩法简单,乐趣无穷,一直深 受各年龄层的玩家喜爱,经久不衰。而计算机和网络的发展给于了它更大的发展空 间。本设计的主要目的是通过使用 VISUAL C+进行设计,详细介绍了基于 API 的俄罗 斯方块系统的开发过程。内容包括:Visual C+的特点,系统可行性研究,功能分析, 总体设计和详细设计。通过本文读者了解整个俄罗斯方块的开发过程,同时本次设 计也可以作为系统再开发时的参考。 关键词:俄罗斯方块;游戏;VC ABSTRACT ABSTRACT The Tetris is a game that most people 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 design,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, simultaneously this design also may develops again as the system when the reference. Keywords:Tetris;Game;VC 结论 3 目录 摘要.I ABSTRACT.II 目录.3 1 绪论 .5 1.1 课题背景 .5 1.2 VISUAL C+6.0 介绍 .5 1.3 API 简介 .6 1.4 本章小结 .7 2 可行性研究与需求分析.8 2.1 可行性研究 .8 2.2 需求分析 .8 2.3 本章小节 .9 3 系统的总体设计.10 3.1 总体功能分析 .10 3.2 系统功能分析 .10 3.3 功能模块简介.11 3.4 本章小结.11 4 系统的具体实现.12 4.1 游戏基本逻辑控制.12 4.2 菜单命令的代码设计 .21 4.3 本章小结 .24 结论.25 参考文献.26 致谢.27 结论 4 前言 俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰 动与造成的经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏 制作人 Alex Pajitnov 制作的,它看似简单但却变化无穷,令人上瘾。相信大多数 用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。 俄罗斯方块是大多数人都熟悉的一款游戏,它玩法简单,乐趣无穷,一直深受 各年龄层的玩家喜爱,经久不衰。而计算机和网络的发展给于了它更大的发展空间, 单机版与网络版俄罗斯方块游戏也一直深受人们的喜爱, 经调查,俄罗斯方块在各 种版本的游戏领域一直占据着重要地位,这就使得这款游戏的意义更加重要。本设 计的主要目的是通过使用 Visual C+进行设计,详细介绍了基于 API 的俄罗斯方块系 统的开发过程。内容包括:Visual C+的特点,系统可行性研究,功能分析,总体设 计和详细设计。 该俄罗斯方块游戏主要实现以下功能: 1. 每四个小方块可组合成一个方块群。 2从七个方块群中,随机取一组,并且告诉玩家下一组方块是什么。 3在游戏框中方块由上方慢慢落下。 4玩家可以按【】 、 【】移动方块,按【】加速方块落下的速度,按【】 、 空格键旋转方块,所有的方块都要在游戏框中。 5方块落下是,当方块组中由一个到达游戏框最底或是下一格有方块时即停止移动, 净将方块移到游戏框底。 6如果同一行的 10 格中全部填满小方块,即可消除该行,上面的方块以行为单位, 由上一行一行一行往下移。 7消除的行数越多,落下的速度越快。 8如果有方块停住时有方块未在游戏框内,游戏结束。 9游戏能够在玩的时候给出分数、速度和级别。 结论 5 1 绪论 1.1 课题背景 作为一款极为经典的游戏,俄罗斯方块吸引一代代玩家乐此不彼,本例通过使 用 VISUAL C+进行设计,大量使用了 API 函数,将书本知识应用到实际程序中,以 便于为以后的进一步学习奠定基础。 1.2 VISUAL C+6.0 介绍 作为一种 C/C+语言的集成开发环境(IDE),产生 VC 的最早的根源其实要追 溯到 DOS 时代的 Borland 公司,当初 Borland 公司开发的 Turbo Pascal 和 Turbo C 让程序员们深刻感受到了把编辑器和编译器集成在一起的 IDE 是多么的方便,微软 也看到了这一优点,于是相继开发了 Quick C 和 Microsoft C/C+等多个 DOS 版本的 C/C+集成开发工具。随着 Windows 的不断成熟,微软决定放弃 DOS 下的开发工作, 正式推出了 Windows 下的 Visual C+ 1.0,早期的 VC 功能并不什么强大,使用起来 也不方便,1.0 版和 1.5 版都是 16 位编程工具。VC 的革命性改变得益于 Windows 95 的推出,从 VC 2.0 开始,微软又放弃了 16 位编程,以后的 VC 都只用于 32 位编程 开发,为了与 MFC 类库的版本号保持一致,微软跳过了版本 3,直接推出 VC 4.0, 这个版本及修订版 4.2 的部分界面风格一直被保留到最新的 VC 6.0 中。从 VC4 到 VC6,VC 的各种功能不断增强,MFC 类库的内容也越来越丰富,现在利用 VC 开发应 用程序已经是一件相当轻松的事情了。 现在的 C+ Builder 也是一个非常优秀的开发工具,但是基于下面的几点原因, 使用 VC 更为现实:首先,VC 的核心MFC 类库已是事实上的业界标准;其次,VC 与 Visual Studio 中的其它可视化开发工具紧密集成,可用于开发非常专业的 Windows、Web 和企业级应用程序;第三,VC 的联机帮助已被集成到 MSDN(微软开发 者网络)库中去了,后者包含了微软大部分产品的技术文档和支持资料,内容相当 丰富,是程序员不可多得的参考资料,现在 MSDN 库随着 Visual Studio 6.0 一起发 行,实在是大家的福音。 在 Windows 版本系列中,下列特点是始终保持并不断发展的: 图形化的窗口界面。 多任务方式的运行环境。 虚拟化的设备接口。 以虚拟内存为核心的内存管理。 网络功能及应用程序,包括 Microsoft 网络、通用基础网络协议等。 结论 6 多媒体功能及应用程序,包括图形、图像、声音、动画和开发工具等。 功能丰富的用户管理工具和实用软件。 目前 VC 的最新版本是 VC6,属于微软可视化开发套件 Visual Studio 6.0 中的 一项重头戏。VC6 引入了多项出色的新功能,例如智能感应(IntelliSense)技术, 程序员在键入代码时,VC6 的编辑器能自动把属性、参数信息、数据类型信息、代码 信息罗列出来,供程序员选择并自动完成输入,这种技术源自于 VB5,现在已被应用 到了 VC6、VJ6 和 IE5 中,有了它之后,程序员无需去记忆复杂的语法、参数和构件 属性,从而提高了编程效率。另一项典型的新技术是即编即调(Edit and Continue),现在程序员可以直接在调试过程中编辑代码,而不用象以前那样,需 要先退出调试状态,然后编辑,重新编译连接,并启动调试器,再跟踪到发生问题 的地方。此外,VC6 还具有动态更新类视图、延迟加载、支持 IE 4.0 通用控件等等 众多的新特性。 作为当今流行的开发环境,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)图形化的可视特点使得 Visual 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 平台上出现了很多优秀的可视化编 程环境,程序员可以采用“即见即所得”的编程方式来开发具有精美用户界面和功 能强大的应用程序。但是如果我们要开发出更灵活、更实用、更具效率的应用程序, 必然要涉及到直接使用 API 函数,虽然类库和控件使应用程序的开发简单的多,但 它们只提供 WINDOWS 的一般功能,对于比较复杂和特殊的功能来说,使用类库和控 件是非常难以实现的,这时就需要采用 API 函数来实现。API 函数是构筑整个 Windows 框架的基石,只有充分理解和利用 API 函数,才能深入到 Windows 的内部, 充分发挥各种 32 位平台的强大功能和灵活性,才能成功地扩展和突破类库、控件和 可视开发环境的限制。 结论 7 所有在 Win32 平台上运行的应用程序都可以调用这些函数。使用 Win32 API,应 用程序可以充分挖掘 Windows 的 32 位操作系统的潜力。 Mircrosoft 的所有 32 位平 台都支持统一的 API,包括函数、结构、消息、宏及接口。使用 Win32 API 不但可 以开发出在各种平台上都能成功运行的应用程序,而且也可以充分利用每个平台特 有的功能和属性。 在具体编程时,程序实现方式的差异依赖于相应平台的底层功能的不同。最显 著的差异是某些函数只能在更强大的平台上实现其功能。例如,安全函数只能在 Windows NT 操作系统下使用。另外一些主要差别就是系统限制,比如值的范围约束, 或函数可管理的项目个数等等。 根据 Windows API 函数完成的功能,可将其分为三类: 窗口管理函数:实现窗口的创建、移动和修改功能。 图形设备接口(Graphics Device Interface,GDI):实现与设备无关的图形 操作功能。 系统服务函数:实现与操作系统有关的各种功能。 1.4 本章小结 本章介绍了软件开发环境 VISUAL C+的基础性知识,同时简要介绍了 WINDOWS API 函数的一些知识,这些知识有助于接下来整个俄罗斯方块游戏的开发与设计。在 用 Visual C+开发面向对象应用程序时,主要有两种方法:一种是使用 Windows 提 供的 API 函数,另一种方法是直接使用 Microsoft 提供的 MFC 类库。本次设计使用 第一种方法。 结论 8 2 可行性研究与需求分析 2.1 可行性研究 问题定义的可行性分析是软件生存周期的第一阶段。可行性研究的目的是使用 最少的代价在尽可能短的时间内确定问题是否能够解决。可行性研究的实质是要进 行一次系统分析和设计的简化过程,也就是在较高层上以抽象的方式进行系统分析 和设计的过程。一般来讲,应该从技术、经济和操作等方面来研究每种解法的可行 性。 2.1.1.要求 作为一款极为经典的游戏,俄罗斯方块吸引一代代玩家乐此不彼,本例通过 使用 VISUAL C+进行设计,大量使用了 API 函数,将书本知识应用到实际程序中, 以便于为以后的进一步学习奠定基础。本例要求大量使用 API 函数,熟悉消息映射 机制的具体实现。 2.1.2 目标 俄罗斯方块游戏的设计目标完成一个比较简单的游戏,使之能够实现俄罗斯方 块游戏的基本功能,成为一个比较完整的游戏框架。该游戏作为一个单机版的游戏 界面,基本达到俄罗斯游戏的基本功能。通过练习能进一步学习 API 函数的使用。 2.1.3 可行性研究方法 实行软件的可行性研究方法主要有:成本效益分析,对估算问题的看法,软件的作 用范围,软件的成本估算,速度安排等。 2.1.4 决定可行性的主要因素 决定软件可行性的四个主要方面有:经济因素,技术因素,法律因素,不同方 案。由于该游戏本身的规模不大,几乎可以在所有的计算机系统上运行,所以对于 硬件和软件没有太苛刻的要求,各种游戏平台,大型电脑、家用游戏机等,甚至连 掌上型的小游戏机都可以运行。 2.2 需求分析 俄罗斯方块是一个脍炙人口的游戏,所以我们大家对它都很是熟悉,现在的要求 是尽量设计一个合格的俄罗斯方块游戏。作为一个广受关注的游戏,现在有大量的 关于俄罗斯方块的资料,我尽量吸取已有的成功的经验,做到精益求精。 结论 9 2.3 本章小节 本章分析了当前开发本系统的形式,并介绍了对计俄罗斯方块游戏系统的可行性 研究的前提及对该系统的需求分析。 结论 10 3 系统的总体设计 总体设计过程首先是寻找实现目标系统的各种不同的方案。要进行系统完善的 总体功能分析,首先要确定俄罗斯方块游戏中的不同模块,鉴于 API 编程的不同, 我尽量用比较清晰的思路表达意图。 根据此系统的功能要求,除了要保持整体设计的统一性,还要突出不同模块的 特点,使整个系统趋于统一。 3.1 总体功能分析 总体设计过程通常由两个主要阶段组成:系统设计阶段和结构设计阶段。 尽量利用现有的软硬件环境,采用 Viusal C+进行俄罗斯方块的设计,由于 API 函数在 Windows 设计中的重要性,需要大量使用到 API 函数,一定程度上增加了难 度。 3.2 系统功能分析 系统功能分析是在系统开发的总体任务的基础工业上完成的。该俄罗斯方块游 戏主要实现以下功能: 1. 从七个方块群中,随机取一组,并且告诉玩家下一组方块是什么。 2. 在游戏框中方块由上方慢慢落下。 3. 玩家可以按【】 、 【】移动方块,按【】加速方块落下的速度,按【】 、 空格键旋转方块,所有的方块都要在游戏框中。 4. 方块落下是,当方块组中由一个到达游戏框最底或是下一格有方块时即停止移动, 净将方块移到游戏框底。 5. 如果同一行的 10 格中全部填满小方块,即可消除该行,上面的方块以行为单位, 由上一行一行一行往下移。 6. 消除的行数越多,落下的速度越快。 7. 如果有方块停住时有方块未在游戏框内,游戏结束。 8. 游戏能够在玩的时候给出分数、速度和级别。 游戏大致的模块可以由主菜单实现控制,主菜单的实现见图 3.1 结论 11 主菜单 开 始 退 出 开 始 暂 停 开 始 结 束 开 始 图 3.1 控制流程 3.3 功能模块简介 由于俄罗斯方块游戏的相对简单,我们将在下一章中具体实现。 3.4 本章小结 本章介绍了俄罗斯方块游戏系统的总体设计方案,详细说明了系统实现的功能 以及整个系统的流程分析,并以功能模块图的形式体现出来。 结论 12 4 4 系统的具体实现系统的具体实现 4.1 游戏基本逻辑控制 使用 API 函数编写游戏,首先生成一个应用程序框架,游戏的框架采用标准的 windows 框架,上面有标题栏、菜单栏,以方便玩家控制游戏,我们先做好这一部分。 菜单栏里包括开始、暂停、结束等控制菜单。 我们要设计对菜单操作进行响应,并设计相应的控制游戏,这是需要添加对菜 单事件的响应方法。 然后在一个面板上构建游戏的界面,将这个面板嵌入到游戏的大框架中,这样 游戏的界面就有了。 在游戏面板构建好之后,应该让游戏能够玩起来,这一部分主要是编写一些算 法,用来控制游戏。这里需要增加对键盘事件的响应,让玩家能够玩游戏。 4.1.1 显示背景 在 Visual C+中,使用 Visual C+自带的方法可以读取并显示位图文件。使 用 API 函数的画刷和画笔函数创建画刷和画笔句柄,然后创建一个矩形区域作为俄 罗斯方块游戏的执行区域(选择黑色背景和红色方块,以便于区分) 。 主要使用到的 API 函数有: GetDC(HWND) 获取设备句柄 int ReleaseDC(HWND,HDC) 由 GetDC()获取的设备环境必须用 ReleaseDC()函数释放 SelectObject(HDC,HWND) 应用程序将使用句柄 HWND 所指的设备进行绘图,直到选入另外的设备为止。 使用时一般需要在函数前进行强制类型转换,设定为 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) 使用当前画笔绘制一个举行区域,并使用当前画刷进行填充。 4.1.2 方块的显示与控制 俄罗斯方块游戏中的基本方块有 7 种,可以通过编写一个结构来存储和显示这 些方块。具体代码如下: typedef struct struct_fPoint /点坐标 结论 13 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=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; 结论 14 pObj-center.y=1; /实现方块组 pObj-pos0.x=sx+1; 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; 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.x=sx; pObj-pos1.y=0; pObj-pos2.x=sx; 结论 15 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.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 决定出现 的方块组的具体形式。关键代码如下: 结论 16 void CreateObj(POBJECT pObj) srand(:GetTickCount(); pObj-type=rand()%7; switch(pObj-type) 使用的 API 函数如下: WINBASEAPI DWORD WINAPI GetTickCount(VOID); GetTickCount 返回(retrieve)从操作系统启动到现在所经过(elapsed)的秒 数,该函数在 winbase.h 头文件中定义,winbase.h 已被包含进 windows.h 头文件中, 所以要使用 GetTickCount 只需包含 windows.h 就可以了。 void srand(int a) void srand(int a)功能是初始化随机产生器,从而产生比较分散的伪随机数, 即 rand()函数的初始值,即使把种子的值改成 a。 从这你可以看到通过 sand()函数, 我们是可以产生可以预见的随机序列;如何我们想产生不可预见的随机序列,我们 利用 srand(unsign)(time(NULL)是一种方法,因为每一次运行程序的时间是不同 的 int rand(void); 该函数包含在头文件 stdlib.h 中,调用时随机产生一个 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)CurObj.posi.y) isDead=TRUE; 结论 17 if(isDead) /游戏结束 EndGame(); CreateObj( 使用的 API 函数有: void *memcpy( void *dest, const void *src, size_t count ); 该函数包含在头文件 memory.h 或 string.h,该函数返回源地址的指针。三个参数中, dest 表示新缓冲区地址,src 表示源缓冲区地址,count 表示源缓冲区大小,该函 数拷贝 count 指定的源缓冲区的字节到目的缓冲区.如果源和目的地址重复,该函数 不能保证重复的区域里最初的源地址的字节在覆盖前被拷贝. 4.1.2.3 在右上角显示下一个产生的方块 该段代码的主要作用是帮助玩家判断下一个出现的方块组合,以便在游戏处 理上作出更有力的判断。主要的设计思想是设定模式,得到下个方块组的产生信息, 调用不同的设备完成设备初始化,然后在右上角实现要求。 关键代码如下: 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 hOldBrush = (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+) /如果可以降落 CurObj.posi.x=tempi.x; CurObj.posi.y=tempi.y; CurObj.center.y+=1; DrawSence(); return; 结论 19 4.1.2.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 型,可以不用翻转。如果不是 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=MAXX) return; if(tempi.y=MAXY) return; 结论 20 for(i=0;i=0;i-) for(DestLine = DieLinei;DestLine0;DestLine-) for(int j=0;jMAXX;j+) EvjDestLine=EvjDestLine-1; 4.2 菜单命令的代码设计 4.2.1 开始游戏 只要在方法中先定义一个线程,然后让这个线程开始运行就可以了。当然还应 该注意重新给一些变量赋值,如游戏的分数、游戏的级别、方块下落的速度等。所 有的组件准备好后,开始进行游戏环境的初始化工作,让玩家可以随时开始游戏。 开始菜单的执行界面如下图: 结论 22 初始化的代码如下: 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(); for(i=0;iMAXY;i+) 结论 24 for(int j=0;jMAXX;j+) Evji=0; for(j=0;j19;j+) DrawSence(); 4.3 本章小结 本章介绍了俄罗斯方块的具体设计与实现,详细的阐明了本系统的设计思想, 描述了设计中的一些编程思想,并利用插入图片的形式展示了部分系统的设计界面。 完成整个设计后的程序主界面如下:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年垃圾处理的成本与效率分析
- 2026年墨西哥甜点甜蜜的诱惑
- 2026年五招让你的身体乳液功效加倍
- 2026年电动按摩科技减缓面部老化速度
- 2026年汽车工业中的机械创新设计
- 南充市高坪区土地利用动态变化与趋势预测研究
- 2027届河北省石家庄市行唐启明中学物理高二上期末教学质量检测模拟试题含解析
- 2027届河北省唐山市开滦二中高二上物理期中检测试题含解析
- 2027届海南省定安县定安中学高三物理第一学期期中学业水平测试模拟试题含解析
- 2027届天津市宝坻区何仉中学高二上物理期末经典试题含解析
- 2026秋小学湘艺版音乐三年级上册(新教材)教学计划附教学进度表
- 2026下半年上海杨浦区卫健系统事业单位专业技术人员招聘93人笔试题库附答案详解【预热题】
- 长江产业投资集团招聘笔试题目及答案解析
- (2026年秋)人教PEP版五年级上册英语教案
- 2026年二级建造师继续教育试题加答案
- 2026年中小学教师高级职称专业水平能力测试复习题库及答案
- 小学一年级上册劳动的教学计划
- 2026年福建专升本护理学(真题)试卷(含答案)
- 新部编版一年级语文上全册教案
- 2026江西吉安峡江县招聘基层就业公共服务岗位工作人员2人考试备考试题及答案详解
- 2027届新高考化学精准突破复习-电化学备考策略
评论
0/150
提交评论