辽宁科技大学本科生毕业设计(论文) 第2页
java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类被称为构件(Components)[1]。
② Swing:是Java Foundation Classes(JFC)的一部分,与ATW 的重量级构件不同,Swing 中大部分是轻量级构件。正是这个原因,Swing 几乎无所不能,不但有各式各样先进的构件,而且更为美观易用。
在本俄罗斯方块游戏的实现中,主要采用Swing类库。 (1) 基本窗口类
图形用户界面的程序效果类似于 Windows 系统下运行的程序。在俄罗斯方块游戏中用到 JFrame 、JWindow 、JPanel 和 JDialog 等几种窗口类。 (2) 原子构件:
俄罗斯方块游戏中用到的原子构件很多,如:JLabel 、 JButton 、 JColorChooser、 JTextField 、 JTextArea 等,这些构件的用法比较简单。 (3) 菜单类:
对一个大的GUI 程序而言通常包括各种菜单,俄罗斯方块游戏中也包含多种菜单,如:JMenu 、 JMenuItem 、JMenuBar 等,Java 为这些菜单构件提供了相应的类。 (4) 事件处理:
大多数的Java 程序通过GUI 构件(例如按钮、窗口、菜单等)与用户进行交互,俄罗斯方块游戏也是如此。俄罗斯方块游戏与用户最重要的交互活动时用户通过键盘来控制游戏、通过按钮和菜单来设置游戏。前者在Java 中表现为键盘事件,后者表现为动作事件。在Java 中事件由分层的事件类表示,而接口则描述了对特定事件的响应方法。想要处理这些事件的类就必须实现一个或多个接口以及这些接口中的方法。 (5) 布局管理:
Java 语言中,提供了布局管理器这个工具来管理组件在容器中的布局[2]。布局管理器按照布局说明选择构件的最佳位置,保证布局的总体外观在不同的操作系统下与Java程序的描述保持一致。
一个布局管理器确定各构件在显示区域的次序、相对大小和相对位置。布局管理器在AWT 中定义为接口,Java 提供了若干类来实现它,其中最基本的类有:FlowLayout 、 GirdLayout 、 BorderLayout 。 (6) 图形类与图形的绘制:
辽宁科技大学本科生毕业设计(论文) 第3页
使用Graphics 类提供的绘图方法“public void paint(Graphics g)”可以画出线条、矩形、 圆形等图形。
由于Frame类继承与Component 类,所以可以通过覆盖所继承的paint 方法来进行绘图。还有一种很流行的绘图方法,即创建一个单独的类,这个类继承于Canvas类并且覆盖paint方法。俄罗斯方块游戏采用的是继承于Canvas类的方式。 ① Graphics 类
Graphics 类用于在一个可视构件内绘图。一个Graphics对象包含了绘图所必需包含的信息,其中包括坐标、色彩、字体和剪贴板区。绘图在一个二维整数坐标系中进行,该坐标的原点在构件的左上角。X轴在水平方向上从左至右增长,Y轴在垂直方向上从上至下增长。
使用Graphics,都可在需要更新时自动调用repaint方法。repaint方法也可以直接在绘图程序中调用。在repaint中需要调用update方法,update方法在清除屏幕后再调用paint方法。paint方法也可以被实际应用需要的绘图代码进行覆盖。 1.3.2 Java多线程机制
俄罗斯方块的实现充分利用了Java的线程功能。在游戏过程中需要对玩家的控制进行实时处理。由于游戏中方块的动态性,每个方块都有一定的生命周期,所以选用线程来实现方块。一个方块用一个线程对象实现,该类继承于Thread类,当一个方块出现时也就表示一个线程产生并开始运行。通过对键盘消息的响应,实现移动、下落、变形等操作。
利用多线程可以使整个游戏的结构更加松散耦合,使资源更加平衡,使用户的操作更加方便。
2可行性研究
2.1 引言
系统开发的总体任务是实现游戏的可操作性、美观性、及时性。本游戏开发过程遵循软件工程规范,采用结构化和面向对象分析设计方法。主要实现windows的GUI程序开发,对游戏中的图形图像进行键盘控制。游戏者可以通过上下左右键及空格键来对游戏进行操作。下面从技术、经济、操作、法律三个方面分析本系统的可行性:
2.2 技术可行性
辽宁科技大学本科生毕业设计(论文) 第4页
可用于本游戏的编程语言有Java 、VC++、C#.NET等,考虑到编写程序的难易程度,和对语言的了解程度以及各种编程语言自身的特点,选择乐Java作为编程语言进行开发。
首先 ,作为一种程序设计语言 ,Java是一种简单的、面向对象的、分布式的、健壮的、安全的、结构中立的、易移植的、多线程的动态语言。它不依赖于机器的结构,并且提供了并发的机制、具有很高的性能。其次 ,它最大限度地利用了网络,Java的小应用程序可在网络上传输而不受 CPU和环境的限制。另外 ,Java还提供了丰富的类库 ,使程序设计者可以很方便地建立自己的系统。
同时还利用了MySQL数据库系统作为其后台数据库,实现排行榜的存储和查询,确保了该系统中数据处理的高效性、快速性和安全性。
2.3 经济可行性
本游戏是为丰富人们业余生活开发的,规模适中,工作复杂性低,实用性强。从开发人力、物力、时间上考虑,开发成本少。而且利用了开源开发环境myEclipse6.0,加快了开发进度,大大的缩短了开发周期,节省了人力、物力、时间,提高了项目开发的效率,降低了开发成本。由于需求分析完整,减少了很多后期维护的复杂性。另外,本系统具有很实用的现实意义。
因此,从经济角度考虑在线考试系统的开发在经济上是完全可行的。
2.4 操作可行性
本游戏是采用java的GUI ( 图形用户界面) 组件创建的简单有好的操作界面,运行也效果简单明了,所有功能均根据基本需求进行开发。强调人—机—环境三者作为一个系统进行总体设计。使操作更人性化,减轻了用户的认知负担,使其更适合用户的操作需求。对所有数据的输入进行完整性和合法性检查,尽量减少误操作。因此在操作上是可行的。
2.5 法律可行性
本游戏的开发作为毕业课程设计以提高分析和解决实际问题的能力,以个人为单位,仅供个人平常娱乐所用,所用他人的成果部分都已注明。所以不存在侵权的问题。该软件是合法的,不会引起任何社会问题。因此,从法律上考虑本系统是可行的。
2.6 结论
辽宁科技大学本科生毕业设计(论文) 第5页
综上所述,本游戏在技术方面、经济方面、操作方面、法律方面均是可行的,由此得出结论:本游戏软件的技术成熟、完备。各方面均无重大问题,因此本游戏软件可开始着手编写。
3需求分析
3.1 引言
需求分析是软件定义时期的最后一个阶段,也是关系到软件开发成败的关键步骤。它的基本任务是准确回答“系统必须做什么?”这个问题[2]。即确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求[3]。在这个阶段中,开发者要做大量的调查和研究,收集信息,明确系统功能。需求分析的结果是系统开发的基础,它的成功与否直接关系到项目的成败和软件的质量。对软件需求的理解程度是决定软件开发工作成功与否的至关重要的环节,需求分析的任务是发现、规范的过程,有益
辽宁科技大学本科生毕业设计(论文) 第6页
于提高软件开发过程中的能见度;便于对软件开发过程进行控制与管理;便于采用工程方法开发软件,提高软件的质量;便于开发人员、维护人员、管理人员之间的交流、协作。
3.2开发意图
竭力为广大俄罗斯方块游戏爱好者提供一款趣味性强、容易学、上手快的益智休闲类游戏,来丰富大家的业余生活。
3.3游戏功能分析
3.3.1 项目目标
项目实现了俄罗斯方块游戏的所有基本功能,同时,为了满足玩家的个人需求,在游戏中加入了背景音乐和音效等效果,从而使游戏从感官上更加吸引玩家;在单机版中设置了当游戏窗口最小化时,游戏能够自动暂停,窗口恢复时游戏自动继续的功能以方便玩家的游戏操作;在双人对战版中加入了玩家自主设置键盘的操作,从而使操作更加简单,更容易上手,且不易失误。力争使游戏具有可靠性,安全性,完整性,灵活性,开发出一款更加适合人们需求的俄罗斯方块游戏。 3.3.2 系统概述
屏幕上有一个X列Y层的区域,计算机自动产生7种不同形状的方块,并出现在区域的最顶端,然后每过一个固定的时间向下落移动一格。玩家可用上、下、左、右及空格键来控制方块的旋转和移动,以便按照玩家所需要的形态和位置落下,不过前提是方块移动和旋转后的位置必须是空的。这7种方块可以旋转90°、180°、270°,因此每种方块有4种状态,7种方块总共有28种状态。另外,在游戏区域产生一个新的方块的一瞬间,立即产生下一个下落方块的形状并在提示区域的左上方有预先提示。同时,在游戏界面的右下方,将显示玩家所得的分数以及游戏的难度级别。每当游戏玩家成功消除一行方块时,将按照一定的算法计算出所得分数,并修改游戏状态区域的分数和行数的数值。本游戏提供了十个游戏级别,用户可根据自己的兴趣选择相应的级别。
下落方块可以通过旋转改变其显示形状,并且不断地往下落,直到它接触到游戏区域底部或者其他已经垒叠起来的下落方块。当一个下落方块到达游戏区域底部或者接触到其他已经垒叠起的下落方块后,其位置即确定下来,并占有该空间的位置区域。如果落下时,方块的方格能填满某一行,则这一行可消去。消去一行后,游戏可给玩家加分,