




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 xxxx 学院学院 毕毕 业业 论论 文文 作作 者:者: xx 学学 号:号: xxxxxxxxxx . 学学 系:系: xxxxxxx 系系 . 专专 业:业: xxxxxxxxxxxxxxxx . 题题 目:目: java 游戏设计游戏设计俄罗斯方块俄罗斯方块 . 指导者:指导者: xxxx 讲师讲师 20122012 年年 4 4 月月 南南 京京 2 毕毕 业业 论论 文文 中中 文文 摘摘 要要 俄罗斯方块是我们最常见的游戏之一,该游戏出现过在掌上游戏机、家用 游戏机、手机游戏和电脑游戏中,因此俄罗斯方块也是一个十分经典的游戏。我 们可以在网上下载到各式各样的俄罗斯方块游戏,也可以在各个游戏大厅中见到 网络对战形式的俄罗斯方块。一般的俄罗斯方块规则比较简单,游戏中随机出现 一些方块,再对这些方块进行变换,下降到游戏界面中的不同位置,如果某一行 中都填充了方块,那么该行就消除。它看似简单却变化无穷,俄罗斯方块上手极 其简单,但是要熟练地掌握其中的操作与摆放技巧,难度却不低。作为家喻户晓 老少皆宜的大众游戏,其普及程度可以说是史上任何一款游戏都无法相比的。 关键词关键词 俄罗斯方块 编程 游戏开发 3 毕毕 业业 论论 文文 外外 文文 摘摘 要要 titletitle thethe designdesign ofof teristeris gamegame abstractabstract tetris may be the most common one in the games. you can find the game on handheld game consoles, console, mobile phone and computer games, so the tetris is a very classic game. we can downloade many kinds of tetris games from the internet , also can see netplay forms of tetris in each game hall. general rules of the tetris game are relatively simple, random some boxes, the box was transformed, down to the game interface in a different location, if a given row are filled of the boxes, so that the line would be eliminated. it seems simple but with countless changes. the game is easy to learn but difficult to master . as a game known to people of all ages, theres no game can be compared with it in history. keywordskeywords tetris ,computer programming, game development 4 目目 次次 1 绪论 1 1.1 游戏开发意义 .1 1.2java 语言概述 .1 5 1.2.1java 技术简介 .1 1.2.2java 体系结构 .2 1.2.3java 语言优势 .2 1.3 java jdk 的安装以及环境变量的设置 3 2 可行性研究 5 2.1 设计目的 .5 2.2 可行性研究 .5 3 需求分析和概要设计 6 3. 1 游戏功能需求 6 3.2 需求分析原则 .6 3.3 概要设计 .7 3.3.1 模型层(model)功能模块图设计 7 3.3.2 游戏结构流程图 .8 4 游戏的详细设计 9 4.1 图形的数据结构 .9 4.2 游戏界面10 4.3 图形的移动 13 4.4 图形的变形14 4.5 判断满行及消行 14 4.6 监听 16 4.6.1 键盘监听 16 4.6.2 定时器监听 16 5 运行及测试 .17 5.1 运行初始状态17 5.2 游戏运行状态 18 5.3 游戏结束状态 19 结束语 .20 致 谢 .21 参 考 文 献 22 1 1 1 绪论绪论 1.11.1 游戏开发意义游戏开发意义 随着经济的快速发展,计算机的地位在人们的生活中已日益突出,基于各 种操作系统的娱乐游戏也越来越多、越来越大众化,成为人们生活中必不可少 的一部分。而随着人们生活品质的提高,电脑游戏也越来越多元化,俄罗斯方 块就是其中一种。俄罗斯方块游戏操作简单方便,也具有一定的思考力,能够 引发人的思维及兴趣,老少皆宜,是一款不错的小游戏。 该游戏的设计遵循软件工程的知识,从软件问题定义开始,接着进行可行 性研究、需求分析、概要设计、详细设计,最后对游戏进行了测试,整个开发 过程贯穿软件工程的知识体系。 它的实现是由四块正方形的色块组成,然后存储在一个数组的四个元素中, 计算机随机产生不同七种类型的方块,根据计算机时钟控制它在一定的时间不 停的产生,用户根据键盘的四个方向键控制变形、左移、右移和向下加速操作, (控制键的实现是由键盘的方向键的事件处理实现) 。然后程序根据这七种方块 堆叠成各种不同的模型,其功能包括开始游戏、暂停游戏、退出游戏等。 此次设计在microsoft windows xp 系统下,以 java 为开发语言,在 eclipse 开发平台上进行游戏的设计与实践。 1.2java1.2java 语言概述语言概述 1.2.1java 技术简介 java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 sun microsystems 公司于 1995 年 5 月推出的 java 程序设计语言和 java 平台 (即 javase, javaee, javame)的总称。 java 平台由 java 虚拟机(java virtual machine)和 java 应用编程接口 (application programming interface、简称 api)构成。java 应用编程接 口为 java 应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展 部分。在硬件或操作系统平台上安装一个 java 平台之后,java 应用程序就可 运行。现在 java 平台已经嵌入了几乎所有的操作系统。这样 java 程序可以只 编译一次,就可以在各种系统中运行。 2 java 分为三个体系 javase(java2 platform standard edition,java 平 台标准版),javaee(java 2 platform,enterprise edition,java 平台企业版), javame(java 2 platform micro edition,java 平台微型版)。 1.2.2java 体系结构 用 java 编程语言编写源代码,把它编译成 java class 文件,然后再在 java 虚拟机中运行 class 文件。 java 虚拟机和 java api 一起组成了一个“平台”(从版本 1.2 开始,称为 java 2 平台),所有 java 程序都在这上面编译。java 程序可以在不同的计算机 上运行,这是因为 java 平台自己可以用软件实现。 java 的执行方式不是编译执行而是解释执行,不同平台上面相同的源代码 编译成符合 java 规范的相同的二进制字节码,然后再交给支持各自平台的虚拟 机去解释执行,“先编译,后解释,再执行“三步走的方式使得 java 实现了“一 次编写,到处运行“,如果 java 应用使用的是 100标准 java api 并且没有直 接调用本地方法,那就可以不加修改地运用在多种平台上,这样的平台无关性 使得在异构的网络环境或者嵌入式方面的应用更方便和现实。java 的网络移动 性带来了一种全新的软件模式,在分布式处理模式的基础之上,可以将软件和 数据通过网络传送到客户端去,这样确保了客户端有必备的软件来浏览和操纵 通过网络传输的数据,java 体系结构支持把单一的执行文件切割成小的二进制 字节码文件 class 文件,而这些文件可以按照应用的需要动态连接、动态扩展。 java 体系结构对安全性的支持主要是通过 java 语言本身安全性、虚拟机的类 加载器和安全管理器以及 java 提供的安全 api 几个方面来实现:防止恶意程序 的攻击,程序不能破坏用户计算机环境;防止入侵,程序不能获取主机或所在 内网的保密信息;鉴别,验证程序提供者和使用者的身份;加密,对传输交换 的数据进行加密,或者给持久化的数据进行加密;验证,对操作设置规则并且进 行验证。 1.2.3java 语言优势 1、java 语言是简单的。 java 语言的语法与 c 语言和 c+语言很接近,使得大多数程序员很容易学习 3 和使用 java。另一方面,java 丢弃了 c+ 中很少使用的、很难理解的、令人 迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地, java 语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理 而担忧。 2、java 语言是一个面向对象的。 java 语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单 继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为 implements) 。java 语言全面支持动态绑定,而 c+ 语言只对虚函数使用动态 绑定。总之,java 语言是一个纯的面向对象程序设计语言。 3、java 语言是健壮的。java 的强类型机制、异常处理、废料的自动收集 等是 java 程序健壮性的重要保证。对指针的丢弃是 java 的明智选择。java 的 安全检查机制使得 java 更具健壮性。 4、java 语言是安全的。 java 通常被用在网络环境中,为此,java 提供了一个安全机制以防恶意代 码的攻击。除了 java 语言具有的许多安全特性以外,java 对通过网络下载的 类具有一个安全防范机制(类 classloader) ,如分配不同的名字空间以防替代 本地的同名类、字节代码检查,并提供安全管理机制(类 securitymanager) 让 java 应用设置安全哨兵。 5、java 语言是可移植的。 这种可移植性来源于体系结构中立性,另外,java 还严格规定了各个基本 数据类型的长度。java 系统本身也具有很强的可移植性,java 编译器是用 java 实现的,java 的运行环境是用 ansi c 实现的。 6、java 是高性能的。与那些解释型的高级脚本语言相比,java 的确是高 性能的。事实上,java 的运行速度随着 jit(just-in-time)编译器技术的发展 越来越接近于 c+。 7、java 语言是多线程的。 java 具有多线程机制,这使得应用程序能够并行地执行。它的同步机制也 保证了对共享数据的共享操作,而且线程具有优先级的机制,有助于分别使用 不同线程完成特定行为,也提高了交互的实时响应能力。java 的多线程技术使 网上实时交互实现很容易,从而为解决网上大数量的客户访问提供了技术基础。 4 1.31.3 javajava jdkjdk 的安装以及环境变量的设置的安装以及环境变量的设置 jdk(java development kit)是一切 java 应用程序的基础,可以说,所 有的 java 程序都是构建在这个基础之上的。 配置步骤: 1.先下载并安装 jdk,本论文使用的版本是 jdk 1.7.0; 2.安装完成后,右击“我的电脑” ,选择“属性” ; 3.选择“高级”选项卡,点击“环境变量” ; 4.在“系统变量”中,设置 3 项属性:java_home,path,classpath(不区分 大小写),若已存在则点击“编辑” ,不存在则“新建” ; 5.java_home 指明 jdk 安装路径,就是刚才安装时所选择的路径 d:javajdk1.7.0,此路径下包括 lib,bin,jre 等文件夹(此变量最好设置, 因为以后运行 tomcat,eclipse 等都需要依靠此变量); path 使得系统可以在任何路径下识别 java 命令,设为: %java_home%bin;%java_home%jrebin classpath 为 java 加载类(classorlib)路径,只有类在 classpath 中, java 命令才能识别,设为: .;%java_home%libdt.jar;%java_home%libtools.jar(要加.表示当前路径)% java_home%就是引用前面指定的 java_home; 6.“开始”-;“运行”,键入“cmd”; 7.键入命令“java-version”,“java”,“javac”几个命令,出现画 面,说明环境变量配置成功; 几个 java 环境变量的含义和 linux 下的配置方法: 通常,我们需要设置三个环境变量:java_home、path 和 classpath。 java_home:该环境变量的值就是 java 所在的目录,一些 java 版的软 件和一些 java 的工具需要用到该变量,设置 path 和 classpath 的时候,也可 以使用该变量以方便设置。 path:指定一个路径列表,用于搜索可执行文件的。执行一个可执行文 件时,如果该文件不能在当前路径下找到,则依次寻找 path 中的每一个路径, 直至找到。或者找完 path 中的路径也不能找到,则报错。java 的编译命令 5 (javac),执行命令(java)和一些工具命令(javadoc,jdb 等)都在其安装路径下 的 bin 目录中。因此我们应该将该路径添加到 path 变量中。 classpath:也指定一个路径列表,是用于搜索 java 编译或者运行时需 要用到的类。在 classpath 列表中除了可以包含路径外,还可以包含.jar 文件。 java 查找类时会把这个.jar 文件当作一个目录来进行查找。通常,我们需要 把 jdk 安装路径下的 jrelibrt.jar(linux:jre/lib/rt.jar)包含在 classpath 中。 path 和 classpath 都指定路径列表,列表中的各项(即各个路径)之间使用 分隔符分隔。在 windows 下,分隔符是分号(;),而在 linux 下,分隔符是冒 号(:)。 2 可行性研究可行性研究 2.12.1 设计目的设计目的 通过研究俄罗斯方块所具备的能力及实现的方法,确定主体机构。利用现 阶段我所能达到的能力,以最简洁,最容易的办法,边开发边测试边修改,完 成俄罗斯方块的开发,从而使自己更好的熟悉并理解应用系统的开发。培养独 立思考能力,检验学习效果和动手能力,提高工程实践能力,为将来的实际工 作打下坚实的基础。 2.2 可行性研究可行性研究 技术可行性:技术可行性:开发本游戏的编程语言有多种,如:vc ,vb,java 等,但 考虑到自身对语言的掌握程度和编写程序的困难度,选择 java 语言进行游 戏的开发。 经济可行性经济可行性:本游戏的开发旨在完成毕业设计,不注重直接的经济效 益和其后的发展方向,只在注重自身水平和能力的提高,对自身的经济要 求也不高,只要有一台能运行相应 java 程序的电脑便可,所以不用考虑到 经济问题。 社会可行性社会可行性:本游戏的开发主要为了完成毕业设计,开发的主体是个 人,仅供个人平常娱乐,不存在法律上的侵权行为,也不会为社会造成影 响,这方面是完全可行的。 6 3 需求分析和概要设计需求分析和概要设计 一款游戏项目的确立是建立在各种各样的需求上面,这种需求往往来自于 玩家的实际需求或者处于公司自身发展和实力的情况,其中玩家的实际需求也 就是市场需求最为重要。 3.3. 1 1 游戏功能需求游戏功能需求 28 种状态的方块随机产生,自由下落,落下时玩家可通过键盘方向键(上、 下、左、右键)对该方块进行向上(变形),向下(加速) 、向左、向右移动。以 便以玩家所需要的形态和位置落下。如果落下时,方块的方格能填满某一行, 则这一行可消去。消去一行后,游戏可给玩家加 10 分,若由存在空格的方块填 满整个窗口,则游戏失败。并且可通过点击菜单栏中相应的菜单项,实现游戏 的开始,暂停,结束以及游戏帮助等功能。 3.23.2 需求分析原则需求分析原则 需求分析中的缺陷将给项目成功带来极大风险,这里的“成功”是指推出的 游戏能以合理的定价、及时地在功能、质量上完全满足大部分玩家的期望。 不适当的需求过程引起的一些风险: 1)不受玩家所喜爱 2)玩家需求的不断增加:在开发过程中不断补充需求,项目就越变越庞大 以至超过计划和预算,所以开发者要把需求变更范围控制到最小,即一开始对 游戏定位、范围、目标和成功标准给予明确说明。 3)模棱两可的需求:模棱两可是该游戏功能说明中最为可怕的问题。它的 一层含义是指诸多玩家对需求说明产生了不同的理解;另一层含义是指单个玩 家能用不止一个方式来解释某个功能和需求说明。 4)不必要的特性和功能:“画蛇添足”是指开发人员力图增加一些“玩家欣赏” 但需求规格说明中并未涉及的新功能。 7 3.33.3 概要设计概要设计 3.3.1 模型层(model)功能模块图设计 数组 方块 障碍物 随机产生方 块 确定形状位置 图 3-1 模型层功能模块设计图 8 3.3.2 游戏结构流程图 开始游戏 随机产生方块 是否有键 按下 判断键值并执 行相应动作 是 否 是否满行 是否输了? 是 否 消行并加分 自由下落 结束 否 否 是 图 3-2 游戏结构流程图 9 4 游戏的详细设计游戏的详细设计 4.14.1 图形的数据结构图形的数据结构 本游戏是用一个三维数组 int shapes = new int;作为存储方块的数 据结构来保存方块的 28 种状态的。 方块的形状 第一组代表方块类型有 s、z、l、j、i、o、t 7 种 第二组 代 表旋转几次 第三四组为 方块矩阵 private final int shapes = new int / 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 ,/ 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 ,/旋转一次变为 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 ,/旋转两次变为 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 ,/三次变为 / s s 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,/s s 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ,/旋转一次变为 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,/旋转两次变为 s s 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ,/三次变为 / z 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 , / j 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 , 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , / o 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , / l 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 , 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 , 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , / t 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 10 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 , 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 ; 方块如下图所示: 图 4-1 数据结构图 4.24.2 游戏界面游戏界面 具体代码如下: / 画围墙:将游戏界面的第一行 mapi21 ,第一列 map0j 跟 第 12 列 map11j作为游戏边界。 public void drawwall() for (i = 0; i 0; d-) for (int e = 0; e 11; e+) maped = maped - 1; c = 0; / 是否合法的方法:当方块下落碰到地图上有方块的地方,或者地图边缘 时,return 0;否则 return 1; public int blow(int x, int y, int blocktype, int turnstate) for (int a = 0; a 4; a+) for (int b = 0; b 4; b+) if (shapesblocktypeturnstatea * 4 + b = 1) 16 return 1; 4.64.6 监听监听 4.6.1 键盘监听 具体代码如下: / 键盘监听 public void keypressed(keyevent e) switch (e.getkeycode() case keyevent.vk_down: down(); break; case keyevent.vk_up: turn(); break; case keyevent.vk_right: right(); break; case keyevent.vk_left: left(); break; case keyevent.vk_space: togglepauseandplay(); break; 4.6.2 定时器监听 具体代码如下: / 定时器监听 17 class timerlistener implements actionlistener public void actionperformed(actionevent e) repaint(); if (blow(x, y + 1, blocktype, turnstate) = 1) y = y + 1; delline(); ; if (blow(x, y + 1, blocktype, turnstate) = 0) if (flag = 1) add(x, y, blocktype, turnstate); delline(); newblock(); flag = 0; flag = 1; ; 5 运行及测试运行及测试 5.15.1 运行初始状态运行初始状态 刚进入游戏时,如图 5-1 所示。此时,分数初始化为 0,游戏当前设置为每 消一行增加 10 分,根据定时器监听,按一定速度下落方块。用户可使用键盘左 移键、右移键、上移键和下移键,分别进行左移、右移、旋转和下落操作。 18 图 5-1 游戏初始状态 5.25.2 游戏运行状态游戏运行状态 游戏运行状态,如图 5-2 所示 图 5-2 运行状态 游戏下拉菜单,如果 5-3 所示 19 图 5-3 游戏下拉菜单 5.35.3 游戏游戏结束设计结束设计 当下落的方块跟最上面的障碍物接触时,游戏结束。跳出如下 5-4 界面。 图 5-4 游戏结束界面 20 结束语结束语 本文介绍了俄罗斯方块这款大众化游戏的设计思路及其编程实现。重点介 绍各
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 管理制度的起源
- 地铁车站中立柱施工方案
- 矩形渠衬砌渠道施工方案
- 技术设备购销合同范本
- 重庆城市科技学院《坐具设计》2023-2024学年第二学期期末试卷
- 江西财经职业学院《医事争议处理法》2023-2024学年第一学期期末试卷
- 南昌航空大学《西语国家文化概况》2023-2024学年第二学期期末试卷
- 江西信息应用职业技术学院《数字逻辑基础》2023-2024学年第二学期期末试卷
- 石材幕墙维修施工方案
- 浙江工业职业技术学院《复合材料导论》2023-2024学年第二学期期末试卷
- 9.1 认识调解与仲裁 课件高中政治统编版选择性必修二法律与生活
- 叉车司机四级习题库含参考答案
- 【西安交通大学】2025年电力人工智能多模态大模型创新技术及应用报告
- 辽宁省大连市2024-2025学年高三一模语文试题(解析版)
- 2025年广州铁路职业技术学院单招职业适应性考试题库附答案
- 输液泵使用的操作流程
- 高中英语新人教版选择性必修四Unit 1 -Unit 3续写词汇和例句
- DB11∕T1135-2024供热系统有限空间作业安全技术规程
- 《大学生创新创业基础》选修笔记
- 社交媒体招聘效果评估-深度研究
- 积极心理学课件:从理论到实践提升个人幸福感
评论
0/150
提交评论