-基于java的俄罗斯方块的设计与实现sc.docx
《-基于java的俄罗斯方块的设计与实现sc.docx》由会员分享,可在线阅读,更多相关《-基于java的俄罗斯方块的设计与实现sc.docx(31页珍藏版)》请在咨信网上搜索。
摘要 随着社会日新月异的变化和互联网的飞速发展,计算机已经普及到人们的日常生活中,网络也成为人们生活中的重要组成部分。好的游戏能够给人们的生活带来健康愉快的补充,唯美的艺术享受,一定的教育功效。俄罗斯方块游戏作为一款风靡全球的最经典的益智休闲游戏之一,已经成为老幼皆宜的小游戏.对一般用户来说,它的规则简单,容易上手,但游戏过程却变化无穷。本游戏的设计综合了单机版与双人对战版两种模式,用户可任选一种进行游戏。与通常俄罗斯方块游戏的不同之处在于:在消除满行方块时,方块的颜色会发生变化,以此来提示用户.另外,本游戏还增加了背景音乐和音效的播放功能.单机版中增加了排行榜的功能,游戏结束时,用户可通过对话框输入自己的姓名并存储到排行榜数据表中,如果进入前50名,即可在排行榜上看到自己的游戏记录。双人对战版,实现了人和人之间的对战,提高了游戏的互动性和娱乐性.既能使用户享受到游戏中的乐趣,又能为用户提供一个展现高超技艺的场所。本游戏是采用java的GUI ( 图形用户界面) 组件创建的,强调人—机—环境三者作为一个系统进行总体设计。使操作更人性化,减轻了用户的认知负担,使其更适合用户的操作需求。 关键词 俄罗斯方块;单机版;双人对战版;图形用户界面 Abstract With the rapid change of society and the development of Internet, the computer has already been run through in ours daily life, and the network also becomes one important part of people's life。 The good game could bring the supplement with health and happy, exquisite enjoy of art, certain efficiency of education to people's life。 Tetris, as one of the most classical games, which is illuminating and relaxing, is populared with all over the world, has became a little game that is suit both the young and the old。 To general users, its rule is simple, easy to grasp, but the process of the game is changing infinitely。 The design of this game includes two kinds of modes, both single — player games and double battles version, users can choose any of the game。 The difference with common Tetris lies in: While eliminating the fully squares, the color of the square will change, so as to hint users。 In addition, the broadcast function of the background music and sound are added in this game。 The function of billboard also added into the single - player games, while game is over, users can input their own names through dialog box and store their scores in the table of billboard, if one enters the top of 50, he could see his own record of the game on the billboard。 The function of interpersonal fighting is implemented in double battles version, which improves the interactional and recreational of the game。 This game can not only makes user to enjoy fun in the game, but also can offer a place to represent superb skill to user. The component of GUI (Graphical User Interface) of Java is adopted in this game, it takes people — the machine — environmental as a system so as to design, that makes the operation of the system more humaniztion, the cognizant of burden of the users is lightened。And this of course makes it even more suitable for the demand of users’。 KEY WORD Tetris; Single-player game; Double-players games; Graphical User Interface 目录 第一章 绪 言 1 第一节 选题背景及意义 1 第二节 选题目的 1 第三节 研究内容 1 第二章 可行性研究 2 第一节 引言 2 第二节 技术可行性 2 第三节 经济可行性 2 第四节 操作可行性 2 第五节 法律可行性 2 第六节 结论 2 第三章 需求分析 2 第一节 引言 2 第二节 开发意图 2 第三节 游戏功能分析 2 第四节 游戏的UML基本模型 2 第四章 总体设计 2 第一节 总体设计概述 2 第二节 总体设计思想 2 第三节 系统的类图 2 第四节 游戏的组件图 2 第五节 游戏的配置图 2 第六节 面向连接的Socket的通信机制 2 第七节 数据库设计 2 第八节 游戏的总体流程图 2 第五章 详细设计与实现 2 第一节 详细设计概述 2 第二节 游戏主界面设计与实现 2 第三节 俄罗斯方格类的设计与实现 2 第四节 游戏块的设计与实现 2 第五节 游戏控制的设计与实现 2 第六节 单机版俄罗斯方块游戏的设计与实现 2 第七节 双人对战俄罗斯方块游戏的设计与实现 2 结束语 2 谢辞 2 参考文献 2 电子科技大学毕业论文(设计) 基于java的俄罗斯方块的设计与实现 第一章 绪 言 第一节 选题背景及意义 游戏软件是一种与文化背景密切联系的产品,具有很强的民族性和丰富的文化内涵。伴随着游戏软件在市场上的销售,与其相关的文化也随之传播.因此发展我国自主的益智休闲的游戏软件已是当务之急。游戏是一种基于计算机的应用软件,是新型的休闲娱乐方式.当前开发的游戏软件应该做到知识性、娱乐性、趣味性、教育性相统一。俄罗斯方块作为最经典的益智休闲游戏之一,截至2009年已经发售了1.25亿份,受到50多个国家和地区的玩家喜爱,有超过50种语言的版本,运行在几十种游戏平台上,从掌机、街机、个人电脑,到手机和PDA。本游戏根据软件工程有关的规范,以合理的开发原则,设计出综合了单机版和双人对战版两种模式的俄罗斯方块游戏,给人们的生活带来唯美的艺术享受和健康愉快的补充. 第二节 选题目的 改善现存俄罗斯方块游戏的单一模式,开发出一个可操作性、美观性、及时性的俄罗斯方块游戏。本游戏综合了单机版和双人对战版两种模式,用户可任选一种进行游戏。方便简单又快捷,是娱乐休闲的好方法。游戏中提供了漂亮美观的界面和动听的音乐,使得游戏的视觉表现与用户界面及背景音乐,融合为有机的整体,给人们带来更为丰富的娱乐和体验,同时也给玩家带来无限激情.在当前的游戏开发领域中,Java 有自己的独到之处,用Java编写的代码简单明了、可移植性强,所以本游戏的开发采用面向对象的设计方法,采用开源开发环境MyMyEclipse8。5,界面利用Java Swing提供的图形类实现,游戏块的运行采用多线程(Thread)机制。 第三节 研究内容 本游戏包括两种游戏模式:单机版和双人对战版。在整个游戏的开发过程中涉及到Java基本知识的大部分内容,如事件、线程、动画、双缓冲图像、图形界面、Socket数据传输等方面的知识。主要内容如下: 一、 Java GUI 编程 利用Java 实现的俄罗斯方块几乎能用到Java GUI 的所有方面,其中包括Sun 公司为Java 提供的两个图形界面类库: AWT:其中提供了建立和设置Java的图形用户界面的基本工具。AWT 由Java中的java。awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类被称为构件(Components)[1]。 Swing:是Java Foundation Classes(JFC)的一部分,与ATW 的重量级构件不同,Swing 中大部分是轻量级构件。正是这个原因,Swing 几乎无所不能,不但有各式各样先进的构件,而且更为美观易用。 在本俄罗斯方块游戏的实现中,主要采用Swing类库。 (一)、基本窗口类 图形用户界面的程序效果类似于 Windows 系统下运行的程序。在俄罗斯方块游戏中用到 JFrame 、JWindow 、JPanel 和 JDialog 等几种窗口类。 (二)、原子构件: 俄罗斯方块游戏中用到的原子构件很多,如:JLabel 、 JButton 、 JColorChooser、 JTextField 、 JTextArea 等,这些构件的用法比较简单. (三)、菜单类: 对一个大的GUI 程序而言通常包括各种菜单,俄罗斯方块游戏中也包含多种菜单,如:JMenu 、 JMenuItem 、JMenuBar 等,Java 为这些菜单构件提供了相应的类。 (四)、事件处理: 大多数的Java 程序通过GUI 构件(例如按钮、窗口、菜单等)与用户进行交互,俄罗斯方块游戏也是如此。俄罗斯方块游戏与用户最重要的交互活动时用户通过键盘来控制游戏、通过按钮和菜单来设置游戏。前者在Java 中表现为键盘事件,后者表现为动作事件.在Java 中事件由分层的事件类表示,而接口则描述了对特定事件的响应方法。想要处理这些事件的类就必须实现一个或多个接口以及这些接口中的方法。 (五)、布局管理: Java 语言中,提供了布局管理器这个工具来管理组件在容器中的布局[2].布局管理器按照布局说明选择构件的最佳位置,保证布局的总体外观在不同的操作系统下与Java程序的描述保持一致. 一个布局管理器确定各构件在显示区域的次序、相对大小和相对位置.布局管理器在AWT 中定义为接口,Java 提供了若干类来实现它,其中最基本的类有:FlowLayout 、 GirdLayout 、 BorderLayout 。 (六)、图形类与图形的绘制: 使用Graphics 类提供的绘图方法“public void paint(Graphics g)”可以画出线条、矩形、 圆形等图形。 由于Frame类继承于Component 类,所以可以通过覆盖所继承的paint 方法来进行绘图。还有一种很流行的绘图方法,即创建一个单独的类,这个类继承于Canvas类并且覆盖paint方法。俄罗斯方块游戏采用的是继承于Canvas类的方式. ① Graphics 类 Graphics 类用于在一个可视构件内绘图。一个Graphics对象包含了绘图所必需包含的信息,其中包括坐标、色彩、字体和剪贴板区。绘图在一个二维整数坐标系中进行,该坐标的原点在构件的左上角。X轴在水平方向上从左至右增长,Y轴在垂直方向上从上至下增长。 ② Canvas类 Canvas是一个具有自己坐标系统的构件,使用布局管理器可以确定它在其他构件中的位置。Canvas继承于Component 类,并继承了它的paint(Graphics g)、update(Graphics g)以及repaint()方法。 使用Canvas作为绘图工具时首先创建一个类继承于Canvas类并且覆盖paint方法,再将这个类作为一个成员加入到类似于Frame或Applet(JFrame 或JApplet)的类中,用某种布局管理器对其进行定位。这个类需要完成如下工作: ·Frame 或Applet(JFrame 或JApplet)作为控制者确定所有构件的位置、处理用户的输入、处理其他对象的交互。 ·利用Canvas处理绘图,它的最重要的方法是paint,该方法可以被覆盖。在必要的时候还可以自己定义一些用于绘图的辅助方法。 无论使用Graphics还是使用Canvas作为图形对象,都可在需要更新时自动调用repaint方法.repaint方法也可以直接在绘图程序中调用.在repaint中需要调用update方法,update方法在清除屏幕后再调用paint方法。paint方法也可以被实际应用需要的绘图代码进行覆盖. 二、 Java多线程机制 俄罗斯方块的实现充分利用了Java的线程功能.在游戏过程中需要对玩家的控制进行实时处理.由于游戏中方块的动态性,每个方块都有一定的生命周期,所以选用线程来实现方块.一个方块用一个线程对象实现,该类继承于Thread类,当一个方块出现时也就表示一个线程产生并开始运行.通过对键盘消息的响应,实现移动、下落、变形等操作. 利用多线程可以使整个游戏的结构更加松散耦合,使资源更加平衡,使用户的操作更加方便. 三、 Java与网络通信 网络编程的目的就是直接或间接地通过网络协议与其他计算机进行通信。在网络编程中有三个主要问题: ● 如何准确定位网络上的一台或多台主机. ● 如何进行连接. ● 连接后如何可靠高效地进行数据传输. 这几个问题也是实现俄罗斯方块双人对战版游戏的关键所在。下面首先了解如何实现主机定位、建立通信和数据传输。 (一)。 主机定位 在TCP/IP协议中IP层主要负责网络主机的定位、数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。TCP则提供面向应用的数据传输机制,这是网络编程的主要对象,一般情况下不需要关心IP层是如何处理数据的. 通常在一台主机上总是有多个进程需要网络资源进行网络通信.准确的讲网络通信的对象不是主机,而是主机中运行的进程。这是仅通过主机名或IP地址来标识这么多进程显然是不够的。端口号就是为了在一台主机上提供更多的网络资源而采取的一种手段也是TCP提供的一种机制。只有通过主机名或IP地址与端口号的组合才能唯一确定网络通信中的对象,即进程. (二)。 建立通信 网络数据通信具有两种不同的传输机制:一种是面向连接的通信协议,这种传输方式在数据传送前必须先在两端建立连接,并且所传送的数据不会丢失,这种方式称为TCP;另一种方式则是面向非连接的方式,即传送数据前无需先建立连接,而是将所要传送的数据包成一个个分组再传送,使用这种方式时,由于没有额外的控制,所以传送的数据可能丢失,这种方式成为UDP. TCP和UDP都是传输层上的通信协议,也是一般TCP/IP网络上最常使用的通信协议,且各有用途.在Java中以类库的形式提供了对这两种不同协议的支持.为了提高俄罗斯方块游戏数据传输的可靠性,双人对战版游戏的开发将通过TCP通信技术实现游戏中的数据传输。 (三)。 数据传输 通信机制建立后就要进行数据传输,即要在这个通信机制上建立数据流.如果要将数据发往对方,则要建立数据输出流;如果要读取数据则要建立数据输入流。特别是如果要保存和读取整个对象,则需要创建一些存储对象的成员变量和读取成员变量的方法,而且对象中的成员变量最好能够自动地被保存和读取。Java可以支持将对象作为一个整体通过流进行传输和存储,但必须将对象序列化后才能保证有效地存储和读取对象。 第二章 可行性研究 第一节 引言 系统开发的总体任务是实现游戏的可操作性、美观性、及时性.本游戏开发过程遵循软件工程规范,采用结构化和面向对象分析设计方法。主要实现windows的GUI程序开发,对游戏中的图形图像进行键盘控制。游戏者可以通过上下左右键及空格键来对游戏进行操作。下面从技术、经济、操作、法律三个方面分析本系统的可行性: 第二节 技术可行性 可用于本游戏的编程语言有Java 、VC++、C#.NET等,考虑到编写程序的难易程度,和对语言的了解程度以及各种编程语言自身的特点,选择乐Java作为编程语言进行开发。 首先 ,作为一种程序设计语言 ,Java是一种简单的、面向对象的、分布式的、健壮的、安全的、结构中立的、易移植的、多线程的动态语言。它不依赖于机器的结构,并且提供了并发的机制、具有很高的性能。其次 ,它最大限度地利用了网络,Java的小应用程序可在网络上传输而不受 CPU和环境的限制。另外 ,Java还提供了丰富的类库 ,使程序设计者可以很方便地建立自己的系统。 同时还利用了MySQL数据库系统作为其后台数据库,实现排行榜的存储和查询,确保了该系统中数据处理的高效性、快速性和安全性。 第三节 经济可行性 本游戏是为丰富人们业余生活开发的,规模适中,工作复杂性低,实用性强。从开发人力、物力、时间上考虑,开发成本少。而且利用了开源开发环境MyEclipse8。5,加快了开发进度,大大的缩短了开发周期,节省了人力、物力、时间,提高了项目开发的效率,降低了开发成本。由于需求分析完整,减少了很多后期维护的复杂性.另外,本系统具有很实用的现实意义。 因此,从经济角度考虑本系统的开发在经济上是完全可行的. 第四节 操作可行性 本游戏是采用java的GUI ( 图形用户界面) 组件创建的简单有好的操作界面,运行也效果简单明了,所有功能均根据基本需求进行开发。强调人—机-环境三者作为一个系统进行总体设计。使操作更人性化,减轻了用户的认知负担,使其更适合用户的操作需求。对所有数据的输入进行完整性和合法性检查,尽量减少误操作。因此在操作上是可行的。 第五节 法律可行性 本游戏的开发作为毕业课程设计以提高分析和解决实际问题的能力,以个人为单位,仅供个人平常娱乐所用,所用他人的成果部分都已注明。所以不存在侵权的问题。该软件是合法的,不会引起任何社会问题。因此,从法律上考虑本系统是可行的。 第六节 结论 综上所述,本游戏在技术方面、经济方面、操作方面、法律方面均是可行的,由此得出结论:本游戏软件的技术成熟、完备。各方面均无重大问题,因此本游戏软件可开始着手编写。 第三章 需求分析 第一节 引言 需求分析是软件定义时期的最后一个阶段,也是关系到软件开发成败的关键步骤。它的基本任务是准确回答“系统必须做什么?”这个问题[2].即确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求[3].在这个阶段中,开发者要做大量的调查和研究,收集信息,明确系统功能.需求分析的结果是系统开发的基础,它的成功与否直接关系到项目的成败和软件的质量。对软件需求的理解程度是决定软件开发工作成功与否的至关重要的环节,需求分析的任务是发现、规范的过程,有益于提高软件开发过程中的能见度;便于对软件开发过程进行控制与管理;便于采用工程方法开发软件,提高软件的质量;便于开发人员、维护人员、管理人员之间的交流、协作。 第二节 开发意图 竭力为广大俄罗斯方块游戏爱好者提供一款趣味性强、容易学、上手快的益智休闲类游戏,来丰富大家的业余生活。 第三节 游戏功能分析 一 、项目目标 项目实现了俄罗斯方块游戏的所有基本功能,同时,为了满足玩家的个人需求,在游戏中加入了背景音乐和音效等效果,从而使游戏从感官上更加吸引玩家;在单机版中设置了当游戏窗口最小化时,游戏能够自动暂停,窗口恢复时游戏自动继续的功能以方便玩家的游戏操作;在双人对战版中加入了玩家自主设置键盘的操作,从而使操作更加简单,更容易上手,且不易失误。力争使游戏具有可靠性,安全性,完整性,灵活性,开发出一款更加适合人们需求的俄罗斯方块游戏. 二、系统概述 屏幕上有一个X列Y行的区域,计算机自动产生7种不同形状的方块,并出现在区域的最顶端,然后每过一个固定的时间向下落移动一格。玩家可用上、下、左、右及空格键来控制方块的旋转和移动,以便按照玩家所需要的形态和位置落下,不过前提是方块移动和旋转后的位置必须是空的.这7种方块可以旋转90°、180°、270°,因此每种方块有4种状态,7种方块总共有28种状态。另外,在游戏区域产生一个新的方块的一瞬间,立即产生下一个下落方块的形状并在提示区域的左上方有预先提示。同时,在游戏界面的右下方,将显示玩家所得的分数以及游戏的难度级别.每当游戏玩家成功消除一行方块时,将按照一定的算法计算出所得分数,并修改游戏状态区域的分数和行数的数值.本游戏提供了十个游戏级别,用户可根据自己的兴趣选择相应的级别. 下落方块可以通过旋转改变其显示形状,并且不断地往下落,直到它接触到游戏区域底部或者其他已经垒叠起来的下落方块.当一个下落方块到达游戏区域底部或者接触到其他已经垒叠起的下落方块后,其位置即确定下来,并占有该空间的位置区域。如果落下时,方块的方格能填满某一行,则这一行可消去。消去一行后,游戏可给玩家加分,垒在其上的方块将按照一定的算法落下来代替该行空间.游戏的结束是以下落方块的顶部到达游戏区域顶部作为判断依据,若存在空格的方块填满整个窗口,则游戏失败. 系统默认设置使用右边的窗口,用光标操作:“←"左移一格;“→”右移一格;“↑"变形;“↓”下移一格;“空格"丢下方块。双人对战版中玩家还可以定义自己的习惯的按键来操作游戏. 三、系统运行环境 硬件环境:内存:512M,硬盘:256M,cpu:1。8HZ以上 软件环境: MyEclipse8.5,JDK1。6和MySQL数据库. 四、系统功能需求 (一)、 游戏主界面功能需求 良好的用户界面,能够在视觉上吸引玩家。为了使界面简洁美观,需要在主界面中添加背景图片来渲染游戏的气氛,同时为了便于玩家的操作,需要设置四个按钮供玩家选择,分别是“单机版”、“双人对战版”、“帮助"、“退出"。这样的设置让用户一目了然。另外,为了能够实时的显示游戏的进度,还需在主界面下方添加进度条,用动态感来吸引玩家。 (二)、 单机版游戏功能需求 为了满足广大玩家的需要,本游戏特别设置了单机版游戏,这项功能可以让玩家在短期能提高游戏水平,以便更快地适应双人对战版游戏。单机版游戏的界面采用JFrame界面来进行设计。使游戏界面更加美观大方。该界面由4个模块构成,分别是菜单条、菜单项、控制面板和游戏画布。其中菜单条包括游戏、控制、窗口风格、音乐控制、帮助四个菜单.控制面板包括预提示面板,当前信息提示面板、游戏控制按钮面板和背景音乐控制按钮面板。在单机版游戏中,玩家可以根据自己的需要设置游戏级别。另外,为了满足玩家的听觉需求,还增加了自动播放背景音乐的功能、更换背景音乐的功能、暂停背景音乐的功能以及音效效果。为了满足玩家的心理需求,还添加了排行榜的功能,方便玩家及时记录自己游戏战绩.为了进一步方便玩家的实际操作,还为部分操作添加了快捷键的功能,用户无需点击按钮或菜单项即可达到游戏目的. (三)、 双人对战版游戏模块功能需求 为了增强玩家对本游戏的兴趣,还特别设计了双人对战版游戏。双人对战版具有单机版游戏的基本功能。除此之外,还能实时地显示对方玩家的游戏状态。这样可以根据对方的状态,及时改变自己的游戏策略。本功能改变了以往双人版只能在同一台机器上运行的模式。实现了网络双人对战,可以用一台机器作为服务器运行,另一台机器作为客户端运行,也可以在同一台机器上运行.对战双方的数据无需通过其他服务器处理,因此实现的是点对点的通信。 (四)、 俄罗斯方块的需求 良好的方块形状设计,绘制七种常见的基本图形,各个方块要能实现旋转变形、移动和显示。方块的旋转可设为顺时针或逆时针,本游戏采用逆时针变形。 (五)、 键盘处理事件的需求 方块下落时,可通过键盘方向键(上、下、左、右、空格键)对该方块进行向上(旋转变形),向下移动、向左移动、向右移动和丢下操作.双人对战版玩家还可以根据自己的需要设置键盘的操作。 (六)、 显示需求 当方块填满一行时可以消行,剩余方块向下按照一定的算法向下移动并统计分数。当达到一定的分数时游戏升级,并显示游戏升级信息;当游戏方块填满整个屏幕时,游戏结束,并显示游戏结束信息。本游戏共设置十个级别,方块的下落速度随着级别的升高而加快。 第四节 游戏的UML基本模型 一、 游戏的用例图 用例图是由软件需求分析到最终实现的第一步,它描述人们希望如何使用一个系统.用例图在需求分析阶段有很重要的作用,它是作为参与者的外部用户所能观察到的系统功能的模型图,它显示多个外部参与者以及他们与系统提供的用例之间的连接[4].整个开发过程都是围绕需求阶段的用例进行的.通过分析确定本系统的抽象参与者有:计算机和玩家两类。 计算机(computer)。计算机可以实现自动播放背景音乐、方块定时下移、随机产生方块、自动消除满行、更新分数、报告游戏结果等.计算机控制游戏的用例图如图3—1所示. 图3-1 计算机控制游戏的用例图 玩家(player).玩家是本游戏的重要参与者,其中单机版玩家(SinglePlayer)和双人对战版玩家(DoublePlayer)是对玩家的泛化。玩家可以选择游戏模式、控制方块。控制方块用例包括旋转方块、左移方块、右移方块、下移方块、丢下方块等用例。单机版玩家和双人对战版玩家除了包含这些用例外,还各自有相应的用例。其中: 单机版玩家可以控制游戏和设置游戏,控制游戏用例又包括控制游戏状态和控制背景音乐。控制游戏状态用例包括开始游戏、暂停游戏、继续游戏、从新开始、退出等用例,其中从新开始是对开始游戏用例的扩展;控制背景音乐包括更换音乐、暂停播放和继续播放三个用例。设置游戏包括设置方块颜色、设置背景颜色、设置难度级别、设置窗口状态四个用例,其中设置窗口状态用例又包括设置系统平台风格、设置主题风格和设置跨平台风格三个用例。 双人对战版玩家也可以控制游戏和设置游戏,但与单机版玩家不同,控制游戏用例包括控制背景音乐、建立游戏、连接游戏和退出游戏四个用例,控制背景音乐用例又包括暂停播放和继续播放两个用例;设置游戏用例包括设置操作键用例。玩家操作游戏的总的用例图如图3—2所示,从图中可以清楚地看到参与者之间的泛化关系和各个参与者所参与的用例,以及用例之间的关系。 图3-2玩家操作游戏的用例图 二 、游戏的包图 包图是维护和控制系统总体结构的重要建模工具[4].创建包图是在为了在逻辑上把一个复杂的系统模块化,进而高效地组织Java源代码。游戏的包图如图3—3所示,通过该图可以清楚地看到游戏中各个包之间的关系,为后续的游戏设计提供方便. 图3-3 游戏的包图 三、 游戏的状态图 状态图是系统分析的一种常用工具,它能够表征系统的变化状态.单机版游戏的状态图如图3—4所示。双人对战版游戏服务器端和客户端的状态图分别如图3—5和图3-6所示。 图3-4 单机版游戏状态图 单机版:玩家进入单机版游戏模式后,可以点击“开始”按钮开始游戏,游戏进行过程中如果游戏最小化或者玩家点击“暂停"按钮或菜单项,则游戏暂停.如果游戏界面恢复或玩家点击“继续”按钮或菜单项则游戏可以继续,游戏进行过程中玩家还可以点击“停止”按钮或菜单项,使游戏停止.无论游戏是否进行,玩家都可以点击“退出"按钮或菜单项退出游戏. 图3-5 双人对战版服务器端状态图 服务器端:玩家进入双人对战版游戏模式后,可以建立连接,使服务器在某个端口提供监听服务,并等待直到接收到来自客户端玩家的服务请求从而启动服务器。双方建立连接后玩家可以开始游戏,当有一方玩家失败时,游戏结束玩家可以重新建立连接或者选择退出游戏并关闭服务器。 图3—6 双人对战版客户端状态图 客户端:如果玩家作为客户端加入游戏,首先应连接游戏,向服务器起的监听端口发出服务请求。如果连接失败还可以重新连接。一旦连接成功即可开始游戏,当有一方玩家失败时,游戏结束,此时玩家可以选择重新连接或退出游戏。 四、游戏的活动图 活动图是UML用于对系统的动态行为建模的一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流[4]。活动图在本质上是一种流程图。俄罗斯方块游戏总的活动图如图3-7所示。 玩家进入游戏主界面后,可以选择游戏模式:单机版或双人对战版.选择相应的模式即可进入游戏。 单机版:如果玩家选择了单机版,即可对游戏进行相应的设置,包括游戏难度级别设置、方块颜色设置、背景颜色设置、背景音乐设置、窗口风格设置等。然后可以开始游戏.玩家也可先开始游戏,再进行相应的设置。一旦游戏开始,玩家即可对游戏的状态进行控制,包括暂停游戏、继续游戏和退出游戏的操作。 双人对战版:如果玩家选择了双人对战版,即可建立连接进入服务器状态或连接游戏进入客户端状态,当双方玩家成功建立连接后,即可开始游戏.进入双人对战状态.当一方玩家失败时,游戏结束,玩家可退出游戏。 图3—7 俄罗斯方块游戏的活动图 五 、游戏的时序图 时序图描述了对象之间传统消息的时间顺序,它用来表示用例中的行为顺序。当执行一个用例行为时,时序图中的每条消息对应了一个类操作或状态中引起转换的触发事件[4]. 游戏中单机版游戏的时序图如图3-8所示,从图中可以看到,单机版游戏的时序图涉及了8个对象:player(玩家)、game(游戏主类)、music(音乐文件)、controlPanel(控制面板)、canvas(画布)、block(方块类)、enterframe(输入姓名对话框)、heroframe(排行榜)。游戏的动作从玩家进入游戏开始,背景音乐自动播放,然后玩家可以设置游戏难度级别和方块及背景颜色,设置成功后玩家可以通过点击“开始”按钮进行游戏。游戏过程中,不断检查是否有满行方块并检查游戏是否结束,如果有满行就移除,当方块填满整个画布时,游戏结束.此时弹出输入姓名对话框,玩家输入姓名后点击“确定"按钮,将姓名插入到排行榜,排行榜就会自动显示出来。 图3—8 单机版游戏的时序图 双人对战版游戏服务器端玩家的时序图和客户端玩家的时序图分别如图3—9(a)和(b)所示。该时序图涉及了8个对象:player(玩家)、game(游戏主类)、music(音乐文件)、menu(游戏菜单类) 、controlPanel(控制面板)、canvas(画布)、block(方块类)、data(数据传输类). 服务器端:玩家进入游戏后,背景音乐自动播放,玩家可以通过控制面板控制背景音乐,然后通过菜单项建立连接,同时还可以设置操作键。当有客户端成功连接上时,玩家可以点击控制面板上的“开始”按钮进行对战,此时玩家可以控制方块的状态,通过画布绘制方块来显示游戏进程,不断检查是否有满行方块并检查游戏是否结束,如果有满行就移除,当有一方玩家游戏失败时,发出游戏结束消息给游戏主类,此时游戏结束。 图3-9(a) 服务器端玩家的时序图 客户端:玩家进入游戏后,背景音乐自动播放,玩家可以通过控制面板控制背景音乐.同时设置主机和端口号向服务器端发出连接游戏请求.当成功连接服务器时,玩家可以点击控制面板上的“开始”按钮进行对战,此时玩家可以控制方块的状态,通过画布绘制方块来显示游戏进程,不断检查是否有满行方块并检查游戏是否结束,如果有满行就移除,当有一方玩家游戏失败时,发出游戏结束消息给游戏主类,此时游戏结束. 图3—9 (b) 客户端玩家的时序图 第四章 总体设计 第一节 总体设计概述 经过了需求分析阶段的工作,系统必须“做什么"已经清楚了,现在是决定“怎么做”的时候了.总体设计的基本目的就是回答“概括地说,系统应该如何实现?”这个问题[2]。通过这个阶段的工作将划分出组成系统的物理元素.总体设计部分的重要任务就是确定软件的总体结构,也就是要确定系统中每个程序是有哪些模块组成的,以及这些模块之间的关系,同时也包括数据库的设计. 第二节 总体设计思想 俄罗斯方块游戏设计的主要从以下12个方面进行构思: (1)游戏主界面的设计. (2)俄罗斯方格的表示。 (3)俄罗斯方块的表示。 (4)俄罗斯方块的旋转。 (5)俄罗斯方块的运动情况(包括向左、向右、向下和丢下)。 (6)俄罗斯方块的自动消行功能。 (7)游戏级别的自由选择。 (8)游戏得分的计算. (9)游戏菜单选项的设计及功能实现。 (10)游戏背景音乐的播放功能。 (11)俄罗斯方块单机版的具体实现. (12)俄罗斯方块双人对战版的具体实现。 首先,是定义与游戏相关的数据的存储方法,分为两个主要的部分:一个是当前的方块,需要保存位置、当前的旋转状态;另一个是屏幕区域的状态,这可以用一个二维数组来表示。 其次,分析得到按键的含义,做出响应,响应模块:“左移”、“右移"、“下移”、“丢下”和“旋转”几个模块,负责改变当前方块的状态数据;画方块模块:位置移动后,把方块画到新的位置之上;检查模块:在每次改变状态之前,对方块企图占用的区域进行检查。如果无处可放,则此次移动失败.如果方块到区域底端了,则应该固定在当前位置,这可以通过调用前面的画方块模块来实现,同时再产生一个新的方法。这样还需要写一个产生新方块的模块。每次当方块到底的时候,都需要检查一下是否有新的层排满了,如果有,则应该消层,如果这个位置已被占用,则游戏结束,这需要通过调用前面的检查模块来实现。最后检查系统时间,规定每过一个指定的时间间隔就调用一次方块下落模块. 俄罗斯方块是一个非常复杂但比较有趣并且耐玩的游戏,游戏中共有7种方块,每种方块由4个方格组成,如图4—1所示. 图4—1 游戏中的7种方块 第三节 系统的类图 类图描述系统中的类的静态结构,它不仅定义系统中的类,描述类之间的联系,还包括类的内部结构(类的属性和操作)[5]。通过分析用例和问题域,就可以等到相关的类,然后再把逻辑上相关的类封装成包. 一 、俄罗斯方格类的类图 图4—2所示为俄罗斯方格类的类图 图4—2 俄罗斯方格类的类图 RussiaBox:方格类,是组成俄罗斯方块的基本元素,用自己的颜色来表示块的外观。 二、 单机版俄罗斯方块游戏的类图 图4—3所示为单机版俄罗斯方块游戏的类图。其中包括: ① SingleBlock:单机版游戏的方块类,控制块的移动、下落、旋转变形等。 ② SingleControlPanel:单机版游戏的控制面板类,上边安放预显即将出现的方块类型的窗口、难度级别、得分、游戏状态控制按钮、背景音乐控制按钮。 ③ SingleGameCanvas:单机版游戏的画布类,画布类通过检查方格颜色来体现方块的移动情况。 ④ Music:单机版游戏的音乐类,实现背景音乐播放功能、更换背景音乐功能、暂停播放功能、继续播放功能和各种音效播放功能. ⑤ SingleBlocksGame:单机版游戏的主类,负责游戏的全局控制.内含:一个画布类的实例引用,一个保存当前活动块实例的引用,一- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 java 俄罗斯方块 设计 实现 sc
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文