java毕业论文范文.doc

上传人:laozhun 文档编号:4018812 上传时间:2023-04-01 格式:DOC 页数:26 大小:166.50KB
返回 下载 相关 举报
java毕业论文范文.doc_第1页
第1页 / 共26页
java毕业论文范文.doc_第2页
第2页 / 共26页
java毕业论文范文.doc_第3页
第3页 / 共26页
java毕业论文范文.doc_第4页
第4页 / 共26页
java毕业论文范文.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《java毕业论文范文.doc》由会员分享,可在线阅读,更多相关《java毕业论文范文.doc(26页珍藏版)》请在三一办公上搜索。

1、 XXXX学院毕 业 论 文作 者: XX 学 号: XXXXXXXXXX .学 系: XXXXXXX系 .专 业: XXXXXXXXXXXXXXXX .题 目: JAVA游戏设计俄罗斯方块 .指导者: XXXX 讲师 2012 年 4 月 南 京毕 业 论 文 中 文 摘 要俄罗斯方块是我们最常见的游戏之一,该游戏出现过在掌上游戏机、家用游戏机、手机游戏和电脑游戏中,因此俄罗斯方块也是一个十分经典的游戏。我们可以在网上下载到各式各样的俄罗斯方块游戏,也可以在各个游戏大厅中见到网络对战形式的俄罗斯方块。一般的俄罗斯方块规则比较简单,游戏中随机出现一些方块,再对这些方块进行变换,下降到游戏界面中

2、的不同位置,如果某一行中都填充了方块,那么该行就消除。它看似简单却变化无穷,俄罗斯方块上手极其简单,但是要熟练地掌握其中的操作与摆放技巧,难度却不低。作为家喻户晓老少皆宜的大众游戏,其普及程度可以说是史上任何一款游戏都无法相比的。关键词 俄罗斯方块 编程 游戏开发毕 业 论 文 外 文 摘 要Title The Design of Teris Game AbstractTetris may be the most common one in the games. You can find the game on handheld game consoles, console, mobile p

3、hone 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

4、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.Ke

5、ywords Tetris ,Computer programming, Game development目 次1 绪论11.1游戏开发意义11.2JAVA语言概述11.2.1java技术简介11.2.2java体系结构21.2.3java语言优势21.3 JAVA JDK的安装以及环境变量的设置32 可行性研究52.1设计目的52.2可行性研究53 需求分析和概要设计63. 1游戏功能需求63.2需求分析原则63.3概要设计73.3.1模型层(Model)功能模块图设计73.3.2游戏结构流程图84 游戏的详细设计94.1图形的数据结构94.2 游戏界面104.3图形的移动134.4 图形的

6、变形144.5判断满行及消行144.6监听164.6.1键盘监听164.6.2定时器监听165 运行及测试175.1 运行初始状态175.2游戏运行状态185.3游戏结束状态19结束语20致 谢21参 考 文 献221 绪论1.1游戏开发意义随着经济的快速发展,计算机的地位在人们的生活中已日益突出,基于各种操作系统的娱乐游戏也越来越多、越来越大众化,成为人们生活中必不可少的一部分。而随着人们生活品质的提高,电脑游戏也越来越多元化,俄罗斯方块就是其中一种。俄罗斯方块游戏操作简单方便,也具有一定的思考力,能够引发人的思维及兴趣,老少皆宜,是一款不错的小游戏。该游戏的设计遵循软件工程的知识,从软件问

7、题定义开始,接着进行可行性研究、需求分析、概要设计、详细设计,最后对游戏进行了测试,整个开发过程贯穿软件工程的知识体系。它的实现是由四块正方形的色块组成,然后存储在一个数组的四个元素中,计算机随机产生不同七种类型的方块,根据计算机时钟控制它在一定的时间不停的产生,用户根据键盘的四个方向键控制变形、左移、右移和向下加速操作,(控制键的实现是由键盘的方向键的事件处理实现)。然后程序根据这七种方块堆叠成各种不同的模型,其功能包括开始游戏、暂停游戏、退出游戏等。此次设计在Microsoft Windows XP系统下,以Java为开发语言,在eclipse开发平台上进行游戏的设计与实践。1.2JAVA

8、语言概述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应用程序就可

9、运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。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

10、一起组成了一个“平台”(从版本1.2开始,称为Java 2平台),所有Java程序都在这上面编译。Java程序可以在不同的计算机上运行,这是因为Java平台自己可以用软件实现。Java的执行方式不是编译执行而是解释执行,不同平台上面相同的源代码编译成符合Java规范的相同的二进制字节码,然后再交给支持各自平台的虚拟机去解释执行,先编译,后解释,再执行三步走的方式使得Java实现了一次编写,到处运行,如果Java应用使用的是100标准Java API并且没有直接调用本地方法,那就可以不加修改地运用在多种平台上,这样的平台无关性使得在异构的网络环境或者嵌入式方面的应用更方便和现实。Java的网络移

11、动性带来了一种全新的软件模式,在分布式处理模式的基础之上,可以将软件和数据通过网络传送到客户端去,这样确保了客户端有必备的软件来浏览和操纵通过网络传输的数据,Java体系结构支持把单一的执行文件切割成小的二进制字节码文件Class文件,而这些文件可以按照应用的需要动态连接、动态扩展。Java体系结构对安全性的支持主要是通过Java语言本身安全性、虚拟机的类加载器和安全管理器以及Java提供的安全API几个方面来实现:防止恶意程序的攻击,程序不能破坏用户计算机环境;防止入侵,程序不能获取主机或所在内网的保密信息;鉴别,验证程序提供者和使用者的身份;加密,对传输交换的数据进行加密,或者给持久化的数

12、据进行加密;验证,对操作设置规则并且进行验证。1.2.3java语言优势1、Java语言是简单的。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C+ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。 2、Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全

13、面支持动态绑定,而C+ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。 3、Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。 4、Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类Sec

14、urityManager)让Java应用设置安全哨兵。 5、Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。 6、Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C+。 7、Java语言是多线程的。Java具有多线程机制,这使得应用程序能够并行地执行。它的同步机制也保证了对共享数据的共享操作,而且线程具有

15、优先级的机制,有助于分别使用不同线程完成特定行为,也提高了交互的实时响应能力。Java的多线程技术使网上实时交互实现很容易,从而为解决网上大数量的客户访问提供了技术基础。1.3 JAVA JDK的安装以及环境变量的设置JDK(Java Development Kit)是一切java应用程序的基础,可以说,所有的java程序都是构建在这个基础之上的。配置步骤:1.先下载并安装JDK,本论文使用的版本是JDK 1.7.0;2.安装完成后,右击“我的电脑”,选择“属性”;3.选择“高级”选项卡,点击“环境变量” ;4.在“系统变量”中,设置3项属性:JAVA_HOME,PATH,CLASSPATH(

16、不区分大小写),若已存在则点击“编辑”,不存在则“新建”; 5.JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径D:javajdk1.7.0,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse等都需要依靠此变量);Path使得系统可以在任何路径下识别java命令,设为:%JAVA_HOME%bin;%JAVA_HOME%jrebinCLASSPATH为java加载类(classorlib)路径,只有类在classpath中,java命令才能识别,设为:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libto

17、ols.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:指定一个路径列表,用于搜

18、索可执行文件的。执行一个可执行文件时,如果该文件不能在当前路径下找到,则依次寻找PATH中的每一个路径,直至找到。或者找完PATH中的路径也不能找到,则报错。Java的编译命令(javac),执行命令(java)和一些工具命令(javadoc,jdb等)都在其安装路径下的bin目录中。因此我们应该将该路径添加到PATH变量中。CLASSPATH:也指定一个路径列表,是用于搜索Java编译或者运行时需要用到的类。在CLASSPATH列表中除了可以包含路径外,还可以包含.jar文件。Java查找类时会把这个.jar文件当作一个目录来进行查找。通常,我们需要把JDK安装路径下的jrelibrt.ja

19、r(Linux:jre/lib/rt.jar)包含在CLASSPATH中。PATH和CLASSPATH都指定路径列表,列表中的各项(即各个路径)之间使用分隔符分隔。在Windows下,分隔符是分号(;),而在Linux下,分隔符是冒号(:)。2 可行性研究2.1设计目的通过研究俄罗斯方块所具备的能力及实现的方法,确定主体机构。利用现阶段我所能达到的能力,以最简洁,最容易的办法,边开发边测试边修改,完成俄罗斯方块的开发,从而使自己更好的熟悉并理解应用系统的开发。培养独立思考能力,检验学习效果和动手能力,提高工程实践能力,为将来的实际工作打下坚实的基础。 2.2可行性研究技术可行性:开发本游戏的编

20、程语言有多种,如:VC ,VB,JAVA等,但考虑到自身对语言的掌握程度和编写程序的困难度,选择JAVA语言进行游戏的开发。 经济可行性:本游戏的开发旨在完成毕业设计,不注重直接的经济效益和其后的发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台能运行相应JAVA程序的电脑便可,所以不用考虑到经济问题。社会可行性:本游戏的开发主要为了完成毕业设计,开发的主体是个人,仅供个人平常娱乐,不存在法律上的侵权行为,也不会为社会造成影响,这方面是完全可行的。3 需求分析和概要设计一款游戏项目的确立是建立在各种各样的需求上面,这种需求往往来自于玩家的实际需求或者处于公司自身发展和实

21、力的情况,其中玩家的实际需求也就是市场需求最为重要。3. 1游戏功能需求28种状态的方块随机产生,自由下落,落下时玩家可通过键盘方向键(上、下、左、右键)对该方块进行向上(变形),向下(加速)、向左、向右移动。以便以玩家所需要的形态和位置落下。如果落下时,方块的方格能填满某一行,则这一行可消去。消去一行后,游戏可给玩家加10分,若由存在空格的方块填满整个窗口,则游戏失败。并且可通过点击菜单栏中相应的菜单项,实现游戏的开始,暂停,结束以及游戏帮助等功能。3.2需求分析原则 需求分析中的缺陷将给项目成功带来极大风险,这里的“成功”是指推出的游戏能以合理的定价、及时地在功能、质量上完全满足大部分玩家

22、的期望。 不适当的需求过程引起的一些风险: 1)不受玩家所喜爱2)玩家需求的不断增加:在开发过程中不断补充需求,项目就越变越庞大以至超过计划和预算,所以开发者要把需求变更范围控制到最小,即一开始对游戏定位、范围、目标和成功标准给予明确说明。3)模棱两可的需求:模棱两可是该游戏功能说明中最为可怕的问题。它的一层含义是指诸多玩家对需求说明产生了不同的理解;另一层含义是指单个玩家能用不止一个方式来解释某个功能和需求说明。4)不必要的特性和功能:“画蛇添足”是指开发人员力图增加一些“玩家欣赏”但需求规格说明中并未涉及的新功能。3.3概要设计3.3.1模型层(Model)功能模块图设计数组方块障碍物随机

23、产生方块确定形状位置图3-1模型层功能模块设计图3.3.2游戏结构流程图开始游戏随机产生方块是否有键按下判断键值并执行相应动作是否是否满行是否输了?是否消行并加分自由下落结束否否是图3-2游戏结构流程图4 游戏的详细设计4.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,

24、 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 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,/S 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ,/旋转一次变为 0, 1,

25、1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,/旋转两次变为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,

26、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,

27、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 ,

28、/ t 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 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.2 游戏界面具体代码如下:/ 画围墙:将游戏界面的第一行 mapi21 ,第一列map0j 跟 第12列map11j作为游戏边界。 public void dr

29、awwall() for (i = 0; i 12; i+) mapi21 = 2; for (j = 0; j 22; j+) map11j = 2; map0j = 2; / 当游戏重新开始时,游戏地图清空初始化 public void newmap() for (i = 0; i 12; i+) for (j = 0; j 22; j+) mapij = 0; / 生成新方块的方法public void newblock() blockType = (int) (Math.random() * 1000) % 7;turnState = (int) (Math.random() * 10

30、00) % 4;x = 4;y = 0;if (gameover(x, y) = 1) pause(true);/JOptionPane.showMessageDialog(this.getParent(), GAME OVER);switch (JOptionPane.showConfirmDialog(null, GAME OVERn开始新游戏?, Game Over, JOptionPane.YES_NO_OPTION)case JOptionPane.YES_OPTION:newmap();drawwall();score = 0;pause(false);break;default:

31、System.exit(0);/ 初始化构造方法 Tetrisblok() newblock(); newmap(); drawwall(); Timer timer = new Timer(1000, new TimerListener(); timer.start(); / 画方块的的方法 public void paintComponent(Graphics g) super.paintComponent(g); / 画当前方块 for (j = 0; j 16; j+) if (shapesblockTypeturnStatej = 1) g.fillRect(j % 4 + x +

32、1) * 10, (j / 4 + y) * 10, 10, 10); / 画已经固定的方块 for (j = 0; j 22; j+) for (i = 0; i 12; i+) if (mapij = 1) g.fillRect(i * 10, j * 10, 10, 10); if (mapij = 2) g.drawRect(i * 10, j * 10, 10, 10); g.drawString(score= + score, 125, 10); g.drawString(变形, 125, 130); g.drawString(左移, 125, 150); g.drawString

33、(右移, 125, 170); g.drawString(加速, 125, 190); 4.3图形的移动 图形类Shape保存了自己的位置信息,用x表示图形到左边界的距离,y表示图形到上边界的距离,图形移动就是改变x和y的值。向下移动:y+1,向左移动:x-1;向右移动x+1;具体代码如下:/ 左移的方法 public void left() if (blow(x - 1, y, blockType, turnState) = 1) x = x - 1; ; repaint(); / 右移的方法 public void right() if (blow(x + 1, y, blockType,

34、 turnState) = 1) x = x + 1; ; repaint(); / 下落的方法 public void down() if (blow(x, y + 1, blockType, turnState) = 1) y = y + 1; delline(); ; if (blow(x, y + 1, blockType, turnState) = 0) add(x, y, blockType, turnState); newblock(); delline(); ; repaint();4.4 图形的变形具体代码如下:/ 旋转的方法public void turn() int te

35、mpturnState = turnState; turnState = (turnState + 1) % 4; if (blow(x, y, blockType, turnState) = 1) if (blow(x, y, blockType, turnState) = 0) turnState = tempturnState; repaint(); 4.5判断满行及消行对该行通过循环语句,依次判断各方块为黑色,还是白色,若为黑色(即mapab=1),则 c += 1,行循环结束再用if判定 c ,若 c = 10 ,则分数score += 10 ,且将上面的方块依次下移一行。具体代码如

36、下:public void delline() int c = 0; for (int b = 0; b 22; b+) for (int a = 0; a 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;

37、b+) if (shapesblockTypeturnStatea * 4 + b = 1) & (mapx+ b + 1y + a = 1)| (shapesblockTypeturnStatea * 4 + b = 1) & (map x+ b + 1y + a = 2) return 0;return 1;4.6监听4.6.1键盘监听具体代码如下: / 键盘监听 public void keyPressed(KeyEvent e) switch (e.getKeyCode() case KeyEvent.VK_DOWN: down(); break; case KeyEvent.VK_U

38、P: turn(); break; case KeyEvent.VK_RIGHT: right(); break; case KeyEvent.VK_LEFT: left(); break; case KeyEvent.VK_SPACE: togglePauseAndPlay(); break; 4.6.2定时器监听具体代码如下:/ 定时器监听 class TimerListener implements ActionListener public void actionPerformed(ActionEvent e) repaint(); if (blow(x, y + 1, blockTy

39、pe, 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.1 运行初始状态 刚进入游戏时,如图5-1所示。此时,分数初始化为0,游戏当前设置为每消一行增加10分,根据定时器监听,按一定速度下落方块。用户可使用键盘左移键、右移键、上移键和下移键,分别进行左移、右移、旋转和下落操作。图5-1游戏初始状态5.2游戏运行状态 游戏运行状态,如图5-2所示图5-2运行状态游戏下拉菜单,如果5-3所示图5-3游戏下拉菜单5.3游戏结束设计 当下落

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号