欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于JAVA技术的俄罗斯方块游戏的设计与实现.docx

    • 资源ID:4981439       资源大小:761.57KB        全文页数:49页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于JAVA技术的俄罗斯方块游戏的设计与实现.docx

    1、基于JAVA技术的俄罗斯方块游戏的设计与实现基于JAVA技术的俄罗斯方块游戏的设计与实现摘 要:俄罗斯方块是一款非常经典的游戏,曾经风靡全球,经久不衰,相信不少人都玩过,同时也是我们学习面向对象编程思想的理想实例。现在面向对象的编程语言很多,都可以通过编程来实现。本设计介绍的是用Java语言设计一个俄罗斯方块游戏的全过程,整个游戏系统是一个应用程序,不再是嵌入到网页里的那种小应用程序,并使用了 Swing组件,使得界面更具有专业效果。游戏设计过程中涉及到游戏框架、游戏界面的编写、菜单处理、变量的定义、算法设计以及预览功能的实现。同时,还为游戏添加了其他功能,如设计About对话框,实现游戏分数

    2、的存档,为游戏添加状态栏等.通过本次毕业设计可以学到如何定义类和类成员及其方法;并如何使用JBuilder来创建工程;如何创建一个对话框,并将对话框和主应用程序联系起来共同使用。关键词:俄罗斯方块; Java; 应用程序; Swing组件The Design And Implementation Of A Tetris Game Based On Java TechnologyAbstract: Tetris is a classic and durable game, and it has been popular all over the world。 Believeing it has

    3、been played many of people。 and meanwhile its an ideal sample for leaning objectoriented programming。 It can be implemented by different objectoriented programming languages that exists nowadays. This thesis describes the implementing process of this game in java language, which is implemented in ap

    4、plication form instead of applet that embedded in the web pages. The use of swing component makes the interface look more professional.The process of game programming involves the design of game frame and game interface, menu design, the definition of variable, arithmatic design and the implementati

    5、on of preview function. Meanwhile, others are also added, such as the About dialog, status bar, and the function of game scores saving。 A lot can be learned in the process of programming, such as how to define the classes and its members and functions, how to build a project in JBuilder, and how to

    6、implement a dialog box, and how to connect dialog box to the main frame of using together。Key words: Tetris; Java; application; swing component1 前言 计算机游戏如同戏剧、电影一样,是一种新型的综合性艺术产品,计算机游戏软件的开发和一般的软件产品的开发有着明显的不同,计算机游戏程序设计人员不仅需要掌握程序设计的技巧和软件工程方法,还需要有坚实的专业领域知识,才能有效地生成和实现游戏的画面内容、音效处理等.近来,Java游戏在提供个人娱乐方面变得越来越流

    7、行,这种流行给游戏出版商带来丰厚的利润.JAVA游戏在给游戏开发者和相关人员带来无数商机的同时,也处于极为重要的枢纽位置。据估计,到2009年,全世界的Java游戏玩家有望达到两亿两千万之多, Java游戏开发将被规划并扩展到一个更高的层次。同时,俄罗斯方块可以说是一款非常流行且历久弥新的老游戏,风靡全球,经久不衰。究其历史,俄罗斯方块最早还是出现在PC机上,而我国的用户都是通过红白机了解而喜欢上它的。它之所以如此耐玩,主要在于它拥有简单的控制(只需上下左右方向键)、简单的游戏规则(有空就移,有满行就删除)及刺激的游玩过程(方块下降的速度因等级而变化)等。俄罗斯方块这款游戏最初是由苏联的游戏制

    8、作人Alex Pajitnov制作的,它看似简单但却变化无穷。相信大多数玩家都还记得为它痴迷得茶饭不思的那个俄罗斯方块时代。这款游戏除了好玩之外,在程序设计上也有多处值得学习的地方,如方块的旋转处理、绘图的应用及双重显示缓冲区的使用等。整个游戏在设计上偏重逻辑的运算,其次为绘图及使用者接口的控制,在游戏设计过程中可以了解到对象的设定、绘图的技巧等。俄罗斯方块无论从操作过程或程序设计来看,都是一款既好玩又可以在设计过程中享受成就的好游戏。一个完整的俄罗斯方块游戏,要求带有多关卡设置、计分统计、伴有音响效果和背景音乐,可以控制游戏的开始、暂停和重玩,并具有一定的自动演示功能。同时,还要为游戏添加其

    9、他功能,如设计About对话框,实现游戏分数的存档,为游戏添加状态栏等,并要求使用图形用户界面,界面色彩、布局要求美观,操作流畅。主要涉及到图形用户界面的图形绘制,整个程序采用Swing图形界面,要求熟练掌握Java2图形用户界面的事件处理及部分Swing组件的使用。在代码的编写上要考虑代码重用的思想,要深入理解抽象类和接口的作用等。2 需求分析2。1 系统开发环境当今,运用Java语言来开发一些小游戏已经非常普遍,而一些中型游戏有时也可在网络上见到.Java程序本身无论是在绘图、网络、多媒体等方面都提供有相当多的API链接库,甚至包括了3D领域,所以使用Java程序来设计程序可以获得相当多的

    10、资源。而Java程序可以使用Applet来实现的属性,更使得它拥有更大的发挥空间;另一方面,目前有许多桌面游戏,也逐渐用Java来进行开发,这也是我选择Java开发的原因。Borland JBuilder是一种处于市场领先地位的跨平台开发环境,支持最新的Java标准,并且缩短了开发周期。新增的功能有从输入的EJB代码中生成EJB块,并且增强了EJB2。0设计器。JBuilder一直以其友好的集成开发环境在业界受到广泛的赞誉,这也是JBuilder一直是广大程序员最喜爱的Java开发工具的原因之一。JBuilder的可视化集成开发环境包括文本编辑器、工程创建工具、对象浏览器和调试器等。用户可以在

    11、集成开发环境中创建工程和打开工程,建立、打开和编辑文件,并可以编译、运行和调试应用程序。可以说在JBuilder中开发Java程序,快速而且高效。2。2 系统玩法及规则 游戏的玩法及规则,关系着游戏本身的刺激性及耐玩度,本游戏除了基本的控制方式及规则外,还适度地增加了一些控制及规则,以便能更好地操作游戏和增强它的耐玩度。本游戏在控制上主要采用键盘输入的方式,相关控制键如下表1所示.表1 玩游戏时使用键盘的相关控制键Table 1 Using related control key of the keyboard to control gameat the play game 按键 说明 方块方

    12、向变化 方块下降 方块左移 方块右移 Space 方块直接降落到底部 续表1 按键 说明Pause 游戏暂停 Esc 游戏结束如表1所列,除了一般的控制外,还新增了space(方块直接降落)等按键,这些按键都是有效加快游戏进行的控制键,其它的助记符和快捷键不再介绍。游戏的规则如下表2所示.表2 游戏的规则Table 2 The rules of the game 规则 说明 方块移动 方块会持续向下移动直到无法降落为止,使用者可按相应方向键控- 制方块向左、向右、向下移动,当按向上方向键方块会作90度的旋 转.移动时,预备移往的区域必须符合现在方块的方向及所占区域。 计分 每次删除行数的立方乘

    13、以25再乘速度等级所得积的总和 速度 等级越高速度越快 预备方块 一次提示三个如表2所示,计分方面采用线性增加的方式,这样使得游戏设计简便,再搭配3个预备方块提示,玩家更会考虑再排列方块。2.3 系统设计分析 Java为纯面向对象(ObjectOriented,OO)的程序语言,它的诸多优点在此就不作论述了。从面向对象的观念出发,本程序可分为以下几个对象:方块类型数据程序运算逻辑绘图显示平台分析对象的技巧在于它的重复利用及维护效率。试想,若要把设计出来的程序在不同的显示平台(浏览器或手机)上执行,就要作大幅度的更动甚至重写,这样就失去了面向对象属性,所以本程序分析时将不变与易变的因素分别做成对

    14、象,如方块类型数据及程序运算逻辑就是不变的项目,而绘图及显示平台会因为环境而有所不同属于易变的项目.方块类型数据方块类型虽然形状不同,但状态与行为都是相同的,如下表3所示。利用对象的继承属性与不同形状的特点,定义一个基础方块类(SuperBrick),其他的方块类继承此类并产生派生类,然后再重新定义表示方块形状的变量数据,就可产生新的方块样式.如果要再新增不同的方块样式,只要再派生出不同的方块类即可.表3 方块的状态和行为Table 3 The state and behavior of box 对象要素 说明 状态 记录方块形态的变量 行为 方块作90度旋转的方法程序运算逻辑程序中逻辑运算通

    15、常只作数值的运算及分析,如方块移动时阻碍判断、方块满行判断、删除判断、方块移动或事件响应、成绩的排序等。绘图绘图会因为显示平台的不同而有所不同,例如在单机与手机上的显示环境不相同,或显示效果会有所不同,例如游戏的样式作修正时,即可产生出不同的显示效果。显示平台“可移植性高”是Java的属性之一,Java的应用涉及许多领域,如手机、PDA、单机程序及浏览器等,不同的平台对于它的设定不尽相同,若将显示平台独立为一个类,将有助于主程序的完整性及移植程序的快速性。2.4 注意事项游戏在设计时除了将程序切割成多个对象外,在游戏的逻辑运算上应尽可能做到弹性化。所谓弹性就是方块地图的长与宽都应该可以用参数来

    16、改变,下面就是参数定义部分代码.public final static int BRICK_COLS = 16; /方块的列数public final static int BRICK_ROWS = 20; /方块的行数3 概要设计3。1 系统介绍俄罗斯方块是一个传统的游戏,这个游戏是考验玩家的反应灵敏度和几何图形的一种直觉,想必大家一定都玩过.下面简单介绍我们要编写的这个游戏的功能。游戏的主要功能如下:当游戏程序打开时,有一个登入页面,用来反应游戏的加载情况。游戏当然可以让玩家操纵方块来玩,这里设计用方向键和空格键来控制方块,向上键为90度旋转方块,空格键为直落方块,每种类型的方块都有各自不

    17、同的图片.游戏能够在玩的过程中,给出玩家的等级、分数和消除的行数。游戏有暂停、开始和结束等控制。可以让玩家来调整游戏的速度级别和障碍级别。可以让玩家调整游戏的声音,其包括背景音乐和音效。在游戏结束时,如果玩家的分数进入了前10名,则提示玩家输入名字,并将玩家的名字存入档案之中。游戏的功能结构如下页图1所示。3。2 系统简单设计由于我们要将这个游戏写成一个应用程序(Application),所以首先要设计一下游戏的主框架和菜单。游戏的主框架采用标准的Windows框架,在上面有标题栏、菜单栏、工具栏,以方便玩家控制游戏.我们应该先做好这一部分。菜单栏和工具栏分别放菜单和工具条,这里应包括游戏的开

    18、始、暂停、重新开始、结束等控制菜单和工具。在框架的底部还应该放进去一个状态栏,用来显示游戏的当前状态。我们需要对菜单和工具栏的操作进行响应,并相应地来控制游戏。这时我们需要添加对菜单和工具栏的事件响应方法.然后,应该在一个面板上构建游戏的界面,将这个面板嵌入到游戏的大框架里。游戏的界面包含以下三部分:一是游戏活动区;二是游戏预备方块显示区;三是成绩显示框.这样整个游戏的主界面就出来了。在游戏面板构建好之后,我们应该让游戏能够玩起来,这一部分主要是编写一些算法,用来控制游戏。这里我们还应该增加对键盘事件的响应,让玩家能够控制游戏。最后,我们再来改进这个游戏,使得在游戏结束时能够判断玩家的分数在存

    19、档内是不是前10名,如果是,则将玩家的分数存档。3.3 系统功能设计登入页面由一张图片和一个进度条组成.“图片”:用来显示游戏的一些信息。“进度条”:用来显示游戏进入主程序的时间。游戏主页面 图1 游戏功能结构图Fig l The functional structure chart of the game由菜单条、游戏面板和状态栏组成,分别说明如下: 菜单条:1、“游戏”菜单,包含2个菜单项和1个子菜单组成。 “开始游戏”:用来选择游戏版本和运行游戏。 “放弃游戏”:用来退出当前游戏,返回主页面。 “退出游戏”:用来退出程序。 2、“设置”菜单,它包含6个菜单项。 “暂停游戏:用来暂停游戏,

    20、再次点击时可以取消暂停。 “重新开始”:用来重玩游戏。 “速度等级:用来选择游戏的难易级别. “障碍等级”:用来选择游戏的障碍级别。 “播放背景音乐”:用来播放场景音乐,版本不同,音乐不同. “播放音效:用来播放一些触发音乐,它随着版本不同而异。 3、“成绩”菜单,它只包含1个菜单项。 “排行榜:用来查看分数为前10名的玩家信息。 4、“帮助”菜单,它包含2个菜单项。 “游戏文字说明:以文字的形式,说明游戏的功能和玩法。 “关于”:用来显示游戏的一些版本信息。 游戏面板:1、“方块活动区,方块程序在里面进行.2、“预备方块显示区”,用来显示预备的三个方块组。 3、“成绩状态显示区”,用来显示游

    21、戏级别、分数和消除的行数。 状态栏:用来显示游戏的状态,它包含有三个状态:游戏装载完毕、游戏运行中及暂停游戏。游戏结束页面由游戏结束显示框和输入个人信息显示框组成。 游戏结束显示框:用来显示游戏已经结束,并让玩家选择是保存信息,还是退出游戏。 输入个人信息显示框:用来输入玩家的一些个人信息,保存在成绩表中,并退出程序.3.4 系统流程游戏流程如下页图2所示。 图2 游戏流程图Fig 2 Flowchart of game4 系统详细设计4。1 设计游戏框架AWT最初的设计目标是让程序员构建一个通用的图形用户接口(GUI),但是,这个目标并没有达到。在Java 1。0抽象窗口工具包产生的是在各个

    22、系统看来都欠佳的图形用户接口。除此之外,它还限制只能使用4种字体,限制我们不能够访问操作系统中现有的高级GUI元素。在Java 1.1里,对抽象窗口工具包进行了很好的改进,更加清晰、面向对象的编程使得我们使用起来更加方便。在Java 1。2里,又增添了Java的基础类(JFC),这是一个被称为Swing的GUI的一部分。Swing的使用方法很简单,类似AWT包里类的使用方法.编写游戏框架先使用JBuilder新建一个项目,这次我们将使用最简单的方法建立应用程序框架。先建立一个工程,将工程的名字命名为winimagetetirs.在JBuilder的主菜单中,选择File主菜单New子菜单项Ge

    23、neral选项卡Application选项,点击OK按钮,进入应用程序向导对话框。在对话框中规定应用程序主类的名称为:AppMain,如下图3所示。图3 创建Application的向导界面1Fig 3 The first wizard interface of building application接下来我们要命名程序界面框架的名称。在当前的对话框中点击Next按钮,进入应用程序向导第二步,在这里命名Frame类的名称和标题分别为FrameMain和winimagetetirs,如下图4所示。接着点击Finish按钮,JBuilder就为我们建立好了一个应用程序框架.这个应用程序框架中有一

    24、个主类AppMain和一个界面框架类FrameMain。我们还要写一个方法,用来初始化窗口的大小和位置,代码如下:窗口位置代码:frame。setLocation((screenSize。widthframeSize。width) /2,(screenSize.height frameSize。height) / 2-12);窗口大小代码:this.setBounds(0, 0, game_area_width + info_area_width + 12,game_area_height + 59+28); 我们应该在构造方法里调用这个方法。关掉系统可以调用System。exit()方法,关

    25、掉整个窗口可以使用Frame.dispose()方法。图4 创建Application的向导界面2Fig 4 The second wizard interface of building application为游戏编写菜单项游戏的菜单包含“游戏”、“设置”、“成绩”、“关于”4个主菜单。我们使用UI设计器中的菜单设计器来进行菜单项的编辑。我们应该对界面类FrameMain进行编辑,因为这个类用于界面的显示,所有的组件都要添加在这个类中。下面打开FrameMain类,然后进入UI编辑器。组件是添加在组件容器里的,菜单项组件的容器就是菜单条(MenuBar)。在工具条中单击Swing Cont

    26、ainers标签。在其中选择组件javax。swing.JMenuBar,添加到界面上。然后在屏幕左下角的概要浏览器中打开Menu目录,就会看到添加好的菜单条对象jMenuBar1。双击对象jMenuBar1,进入菜单编辑界面.菜单项的编辑十分简单,点击空白的菜单项,然后直接键入菜单项的名称即可。如果想要插入分隔符,可以使用上方菜单中的“插入分隔符”选项。每一个子菜单项我们都确定了对应的名字,如下表4所示。表4 菜单项的设置Table 4 The setuping of menu items主菜单 名称 子菜单 名称 子菜单 名称游戏 MenuGame 开始游戏 MenuGameBegin 蓝

    27、色天空 MenuGamemode2 巴乔传奇 MenuGamemode1 放弃游戏 MenuGameQuit 退出游戏 MenuGameExit 设置 MenuSetup 暂停游戏 MenuPause 重新开始 MenuRestart 速度等级 MenuLevel 一级 MenuLevel1 二级 MenuLevel2 三级 MenuLevel3 四级 MenuLevel4 五级 MenuLevel5 障碍等级 MenuLeve2 初级 MenuLeve21 中级 MenuLeve22 高级 MenuLeve23 播放背景音乐 MenuBkMusic 播放音效 MenuCkMusic 成绩 M

    28、enuGrade 排行榜 MenuGradeList 帮助 MenuHelp 游戏文字说明 MenuHelpAbout1 关于 MenuHelpAbout 在添加完菜单项的代码后,然后把菜单项加入到界面中:this.setJMenuBar(jMenuBar1);为菜单添加事件响应上面己经做好了菜单,下面要为每个菜单都添加事件响应。我们用ActionListener接口来做菜单的事件响应。ActionListener是用来接受一个动作事件的。用来处理这些动作事件的类要实现这个接口里的方法,这个类要被发生动作的事件类用addActionListener()方法来注册.当动作事件发生后,用来处理这些

    29、动作事件的actionPerformed()方法将被调用。4。2 设计游戏界面上一节我们己经将游戏的框架编写好了,下面我们将开始写游戏面板的界面。我们设计将游戏写在三个Panel上面。我们再新建三个类,让它们从javax。swing.jpanel里继承,将它命名为GamePanel、StatusPanel和InfoPanel,游戏的主要功能都要在这些类里实现。下面以GamePanel面板为例.在Panel中加入必要的常量和变量我们应该定义三个变量,用来反映游戏的等级、分数和消除的行数.它们定义的都是静态常量。static long GAME_LEVEL; /纪录游戏等级static long

    30、GAME_SCORE; /纪录游戏分数static long GAME_LINE; /纪录游戏消除行数我们应该定义左边用来显示的游戏区的区域的宽度。见下面这行代码:int GRIDX; /x轴格数int GRIDY; /y轴格数下面这行代码定义了每个小方块的宽和边:int BRICK_WIDTH; /单一砖块_宽int BRICK_SIDE; /单一砖块_边在Panel上画出游戏界面下面我们使用Panel的paintComponent() 方法,画出一个游戏的简单界面。我们应该在Panel的构造方法里将Panel的背景图片初始化,将地图数组归零;并且为必要的变量赋上一个初始值等等。然后我们就应

    31、该在paintComponent() 方法里写一些功能代码,让整个Panel能够画出一个初始的界面来。将Panel加到框架里去我们应该将Panel加到框架里,将Panel加到框架中的方法为add(Component c).关键代码如下: gamePanel = new GamePanel(this,0, 0,BRICK_COLS, BRICK_ROWS, BRICK_WIDTH,BRICK_SIDE, BRICK_NEXT_NUM,true); PanelGame。add(gamePanel, BorderLayout.CENTER);4。3 游戏内容设计4。3.1 方块描述传统的方块类型大致上可分为7种,如下图5所示。图5 方块类型Fig 5 The box types不管何种类型的方块,都可以用一个55的二维数组来记录方块状态,如下图6所示为实际图形与数组的对照。 图6 实际图形与数组的对照Fig 6 The compare of the


    注意事项

    本文(基于JAVA技术的俄罗斯方块游戏的设计与实现.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开