基于net的俄罗斯方块游戏设计与实现内容摘要:

空间( namespace Gdiplus),在使用 GDI+函数时必须进行 GDI+的初始化,使用完毕要销毁GDI+。 . Framework . Framework 是 一个可以用来快速开发、部署网站服务及应用程序的开发平台。 这个架构是两个项目的结果:第一个项目的目的是用来改善 Windows 作业平台上的程序开发,特别是改善 COM( Component Object Model,组件对象模块。 一种微软所制定的软件技术;让对象的功 能可以被其它软件所叫用,可以让组件重复使用、容易更新及维护);第二个项目则是制作一个以发展服务( Service)软件为目标的开发平台。 这两个项目团队三年多前就已经在一起工作,他们希望可以发展出一种可以快速开发出以因特网为基础,而且易学易用的开发平台。 . Framework 具有两个主要组件:公共语言运行库和 . Framework 类库 [11]。 公共语言运行库是 . Framework 的基础。 您可以将公共语言运行库看作一个在执行时管理代码的代理,它提供内存管理、线程管理和远程处理等核心服 务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性。 这类似于Java 的虚拟机。 事实上,代码管理的概念是公共语言运行库的基本原则。 以公共语言运行库为目标的代码称为托管代码,而不以公共语言运行库为目标的代码称为非托管代码。 . Framework 的另一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,您可以使用它开发多种应用程序,这些应用程序包括传统的命令行或图形用户界面 (GUI) 应用程序,也包括基于 所提供的最新创新的应用程序(如 Web 窗体 和 XML Web services) [12]。 . Framework 旨在实现下列目标: 提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是 湖南大学毕业设计 (论文 ) 第 8 页 在本地执行但在 Inter 上分布,或者是在远程执行的。 提供一个将软件部署和版本控制冲突最小化的代码执行环境。 提供一个可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性的代码执行环境。 提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。 使开发人员的经验在面对类型大不相同的应用程序(如基于 Windows 的应用程序和基于 Web 的应用程序)时保持一致。 按照工业标准生成所有通信,以确保基于 . Framework 的代码可与任何其他代码集成。 DirectSound 组件 DirectSound 是 DirectX API 的音频组件之一,它可以提供快速的混音、硬件加速功能,并且可以直接访问相关设备,当然,最主要的是它提供的功能与现有的设备驱动程序保持兼容性 [13]。 DirectSound 允许进行波型声音的捕获、重放,也可以通过控制硬件和相应的驱动来获得更多的服务。 DirectSound 的优势当然和 DirectX 的其它组件一样 ——速度,它允许你最大效率的使用硬件,并拥有良好的兼容性。 使用 DirectSound 可以做到什么呢。 很方便的了解硬件能力,并且根据当前计算机硬件配置硬件来决定最好的解决问题的方法。 弥补驱动程序的不足 ——通过属性设置以便硬件能力可以完全发挥,即便是驱动程序没有很好的支持该功能。 短传输延迟时间的混音为了快速的响应流。 3D 声音 湖南大学毕业设计 (论文 ) 第 9 页 声音的捕获 DirectSound 播放音频文件开发的基本流程 : 第一步,创建一个设备对象,设置设备对象的协作度。 第二步,创建一个辅助 Buffer,也叫后备缓冲区。 第三步,获取 PCM 类型的数据。 第四步,将数据读取到缓冲区。 第五步,播放缓冲区中的数据。 配置文件 在应用系统开发时,管理配置是必不可少的。 例如数据库服务器的配置、安装和更新配置等等 [14]。 传统的配置文件 ini 已有被 xml 文件逐步代替的趋势,但对于简单的配置, ini 文件还是有用武之地的。 ini 文件其实就是一个文本文件,它有固定的格式,节 Section 的名字用 []括起来,然后换行说明 key 的值: [section] key=value XML 语言 扩展标记语言 XML 是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然 XML 占用的空间比二进制数据要占用更多的空间,但 XML 极其简单易于掌握和使用 [15]。 XML 与 Access,Oracle 和 SQL Server 等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等, XML 仅仅是展示数据。 事实上 XML 与其他数据表现形式最大的不同是:他极其简单。 这是一个看上去有点琐细的优点,但正是这点使 XML 与众不同。 XML 的简单使其易于在任何应用程序中读写数据,这使 XML 很快成为数据交换的 湖南大学毕业设计 (论文 ) 第 10 页 唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持 XML,那就意味着程序可以更容易的与 Windows、 Mac OS, Linux 以及其他平台下产生的信息结合,然后可以很容易加载 XML 数据到程序中并分析他,并以 XML 格式输出结果。 XML(可扩展标记语言)是从称为 SGML(标准通用标记语言)的更加古老的语言派生出来的。 SGML 的主要目的是定义使用标签来表示数据的标记语言的语法。 标签由包围在一个小于号( )和一 个大于号( )之间的文本组成,例如 tag。 起始标签( start tag)表示一个特定区域的开始,例如 start;结束标签( end tag)定义了一个区域的结束,除了在小于号之后紧跟着一个斜线( /)外,和起始标签基本一样,例如 /end。 SGML 还定义了标签的特性( attribute),它们是定义在小于号和大于号之间的值,例如 img src=中的 src 特性。 如果你觉得它看起来很熟悉的话,应该知道,基于 SGML 的语言的最著名实现就是原始的 HTML。 在 XML 中,采用了如下 的语法: 1. 任何的起始标签都必须有一个结束标签。 2. 可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。 这种语法是在大于符号之前紧跟一个斜线( /),例如 tag /。 XML 解析器会将其翻译成tag/tag。 3. 标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如 bthis is a isample/i string/b。 这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。 4. 所有的特 性都必须有值。 5. 所有的特性都必须在值的周围加上双引号。 如今, XML 已经是世界上发展最快的技术之一。 它的主要目的是使用文本以结构化的方式来表示数据。 在某些方面, XML 文件也类似于数据库,提供数据的结构化视图 [16]。 多线程 每个正在系统上运行的程序都是一个 进程。 每个进程包含一到多个线程。 进程也可能是整个 程序 或者是部分程序的动态执行。 线程是一组 指令 的集合,或者是程序的特殊 湖南大学毕业设计 (论文 ) 第 11 页 段,它可以在程序里独立执行 [17]。 也可以把它理解为 代码 运行的上下文。 所以线程基本上是轻量级的进程,它负责在单个 程序里执行多 任务。 通常由 操作系统 负责多个线程的调度和执行。 多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。 线程是在同一时间需要完成多项任务的时候被实现的。 多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立 [18]。 线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。 多个线程的执行是并发的,也就是在逻辑上 “同时 ”,而不管是否是物理上的 “同时 ”[19]。 如果系统只有一个 CPU,那么真正的 “同时 ”是不可能的,但是由于 CPU 的速度非常快,用户感觉不到其中的区别,因此我们也不用关心它,只需要设想各个线程是同时执行即可。 多线程和传统的单线程在程序设计上最大的区别 在于,由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行的,由此 将 带来的线程调度,同步等问题 [20]。 使用线程的好处有以下几点: 使用线程可以把占据长时间的程序中的任务放到 后台 去处理。 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。 程序的运行速度可能加快。 在一些等待的任务实现上如用户输入、文件读写 和网络收发数据等,线程就比较有用了。 在这种情况下我们可以释放一些珍贵的资源如 内存 占用等等。 湖南大学毕业设计 (论文 ) 第 12 页 3 系统 设计 系统 设计思想 游戏是用来给大家娱乐的,所以要能在使用的过程中给大家带来快乐,消除大家的疲劳, 所以 在游戏中添加了漂亮的场景和动听的音乐,设置了过关升级的功能,激发大家的娱乐激情。 从游戏的基本玩法出发,主要就是俄罗斯方块的形状和旋转,在设计中在一个图片框中构造了一个 30*30(像素) 的小块,由这些小块组合成新的形状,每四个小块连接在一起就可以构造出一种造型,总共设计了 7 中造型,每种造型又可以通过旋转而变化出 2 到 4 种形状,在游戏窗体中用户就可以使用键盘的方向键来控制方块的运动,然后对每一行进行判断,如果有某行的方块是满的,则消除这行的方块,并且使上面的方块自由下落,其中,方块向下的速度是有时钟控件控制的,在游戏中,用户也可以使用向下键加快下落速度,定义一个变量,对消除的函数进行记录,最后就可以得出用户的分数,用 if 语句对分数判断,达到一定的积分就可以升级到下一个档次。 俄罗斯方块游戏设计主要 包括 以下 10 个方面: 1. 游戏界面的设计。 2. 俄罗斯方块的 实现。 3. 键盘输入信息的获取。 4. 俄罗斯方块的 移动 ( 向 左,向右和向下)。 5. 俄罗斯方块的 变换。 6. 方块自动下落与速度的选择。 7. 慢行的判断与消行。 8. 游戏得分的计算。 9. 游戏结束判断。 10. 背景音乐及 音 效。 11. 用户配置保存。 湖南大学毕业设计 (论文 ) 第 13 页 12. 得分保存。 运用的控件和主要对象 在设计过程中主要用到的控件有 :PictureBox 控件, MenuStrip 控件, Button 控件,Label 控件, Timer 控件, winmm 组 件, DirectSound 等等。 主要实现的功能 我们开发的俄罗斯方块游戏,主要实现了以下几种功能: 1. 可以灵活控制方块在图形框中运动。 2. 游戏过程中方块可以自由旋转。 3. 旋转方块同时变化方块颜色。 4. 在游戏过程中可以自由调整游戏速度。 5. 当某一行的方块排列满时,将自动将这一行方块消除,然后将上面所有方块向下移动,可以 同时 消 多 行。 6. 游戏的得分支持积分,并且按照公式: 得分 = 5+ 10 * (同时消除的行数 1) 这样,你 同一时间消除的行数越多,你的得分也就越高,当游戏积分到了一定时可以自动升级,这个升级指速度升级。 7. 游戏中提供了 动听的音乐。 8. 不同的用户对于键位有不同的要求,所以提供了配置保存的功能。 这样就不需要每次游戏都重新配置。 9. 保存前十高的分数。 湖南大学毕业设计 (论文 ) 第 14 页 4 系统 实现 屏幕信息初始化 用来显示状态信息的框 private statusBox。 开始按钮 private btnStart。 显示“下一块”的标签 private label3。 显示“分数”的标签 private label2。 显示“等级”的标签 private label1。 用来画下一块方块的区域 private panel1。 游戏区域 private gameArea。 菜单及许多菜单项的实现不一一列举,最终的的效果如下图: 图 湖南大学毕业设计 (论文 ) 第 15 页 方块的实现 在程序中每一个方块都是一个 Block 类的实例。 Block 包括的参数有方块的宽度,高度,最左端横坐标,最上端纵坐标,方块的数组表示。 其中一共有 7 中形状的方块,以数组表示为: 11 11 1 11 010。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。