




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
分类号_ 密级_ UDC _ 学号 毕业设计(论文)论文题目基于Java的愤怒的小鸟游戏的设计与实现Thesis TopicDesign and implementation of angry birds game based on Java2017年6月01日基于Java的愤怒的小鸟游戏的设计与实现摘要Java语言是一门面向对象的编程语言,它不但汲取了C+语言的各种精髓,而且还抛弃了C+语言里晦涩难懂的多继承和指针等概念,所以Java语言具有的特征便是:功能超强和易用实用。Jbox2D中不仅集成了大量物理运动学和机械运动学计算,而且也将物理仿真包集成到类对象中,同时对象也应用在开发人员与用户的交互界面中。所以我们只需要调用对象或者使用相应的功能,就可以模拟出现实生活中的速度、加速度、抛物线运动、重力、碰撞、反弹等各种各样真实的物理运动。愤怒的小鸟游戏的视角是横向版本的水平视角。背景是为了报复偷鸡蛋的猪,鸟将自己的身体作为武器,就像炮弹一样从弹弓上发射而出,撞向绿猪搭建的堡垒,以达到摧毁绿猪的目的。游戏非常简单,小鸟跳上弹弓,发射角度和强度的改变导致小鸟的落点的不同,玩家需要良好的整体计算,适当的调节强度和角度,从而更准确地击中绿猪。每次击中绿猪,便可获得一定的分数,积累足够的分数便可以通关,游戏设计的体现了放松的情调,乐观的风格。本文将介绍使用Java语言实现经典的益智类游戏作品“愤怒的小鸟”的开发。游戏将主要实现以下几个功能:游戏玩法功能、页面管理功能、难度和级别功能、碰撞功能、鸟类管理功能、玩家管理功能和备份功能等。此游戏不仅可以给玩家带来欢乐,也会使玩家对开发游戏产生极大地兴趣,让玩家切身体会到Java语言在生活方面的无处不在。关键词 Java;C+;Jbox2D;物理运动;愤怒的小鸟全套设计加扣3012250582iiiDesign and implementation of angry birds game based on JavaAbstractJava language is an object-oriented programming language, it not only draws the essence of the C + + language, but also abandoned the C + + language obscure multi-inheritance and pointer concepts, so the Java language has the following characteristics: Super and easy to use practical.Jbox2D not only integrates a large number of physical kinematics and mechanical kinematics calculations, but also the physical simulation package into the class object, while the object is also used in the developer and user interface. So we only need to call the object or use the appropriate function, you can simulate real life in the speed, acceleration, parabolic movement, gravity, collision, rebound and other real physical movement.The type of game is horizontal horizontal view of the version. The background is to retaliate to steal the eggs of the pig, the birds will be their own body as a weapon, like shells from the slingshot thrown into the green pig fortress. The game is very simple, the birds on the slingshot, the angle of the pop-up and strength by the players finger control, pay attention to a good overall calculation, the appropriate adjustment of strength and angle, and thus more accurately hit the pig. Each time hit more green pigs, will get a lot of scores, the game style is full of fun and humor, the game design reflects the relaxed atmosphere, optimistic style.This article will introduce the use of Java language to achieve the classic puzzle game angry bird development. The game will mainly achieve the following functions: gameplay function, page management functions, difficulty and level function, collision function, bird management function, player management function and backup function. This program is intended to stimulate the use of the game to stimulate the use of players and learning interest, so that players experience the Java language in the life of countless.Key words: Java; C+;Jbox2D; Physical movement; angry birdsii目录摘要iAbstractii1 绪论11.1 游戏开发的背景11.2 典型的Java游戏介绍11.2.1 Minecraft介绍11.2.2 Super Mario Bros介绍21.2.3 The Sims介绍31.3 游戏开发的意义32 开发环境42.1 开发语言42.2 开发工具52.3 JDK介绍52.4 Java Awt介绍62.5 Java Swing 介绍72.6 Java语言开发平台搭建93系统需求分析113.1 可行性分析113.1.1 技术可行性113.1.2 经济可行性113.1.3 操作可行性113.1.4 发展可行性123.2 性能需求分析123.3 功能需求分析123.4 系统UML分析133.5界面需求分析144 系统设计164.1系统流程设计164.2 系统架构设计175 详细设计205.1 主界面实现205.2 游戏玩法实现225.3 面板管理功能实现265.4 等级、级别管理功能实现285.5 碰撞管理功能实现325.6 鸟类管理功能实现355.7 胜利管理功能实现385.8 玩家管理和备份管理功能实现406 系统测试446.1系统测试简介446.2 系统测试方法456.3 本系统测试456.3.1 测试用例设计456.3.2 测试方法和结论46结论47参考文献48致谢49附录50外文原文50中文原文55 1 绪论1.1 游戏开发的背景游戏如今已经成为人们生活中不可或缺的一部分,无论是处于童趣中的小孩、还是繁忙工作中的成人,游戏无疑在每一个人生活中起着非常重要的调剂作用。不管是实体玩具还是如今的电子游戏,它们都能给我们留下很多美好的回忆。本人对Java语言有很大的兴趣爱好,大学期间便对其一直进行学习,而且游戏的制作同时也是我非常感兴趣的一个方面,在此之前也进行过一些小游戏的开发。经此次毕业设计机会,使得我想在专业导师的指导下通过这次毕业设计,来提高自己的Java语言水平,为以后的工作打下坚实的语言基础。 游戏名称是“愤怒的小鸟”,英文称为“AngryBird”。 “愤怒的小鸟”是著名游戏公司Rovio偶然间开发出来的益智游戏,从2009年12月上市到iOS。,讲述了鸟类和猪因为猪偷鸟蛋反生的一系列故事。游戏的类型版本是横向版本的水平视角,背景是为了报复偷鸡蛋的猪,鸟将自己的身体作为武器,就像炮弹一样从弹弓射出抛到绿猪搭建的堡垒,并将其摧毁。 游戏非常简单,小鸟跳上弹弓,发射角度和强度由玩家的自行控制,游戏中需要良好的整体计算,适当的调节强度和角度,从而更精确地击中猪。每次击中更多的绿猪,将获得大量的分数。游戏风格充满乐趣和幽默,游戏设计的体现了放松的情调,乐观的风格。愤怒的小鸟这款游戏内容包含着丰富的人机交互:不管游戏本身设计的难度如何,只要玩家学会基本的游戏使用方法,大多数人都可以经过不断训练来打到通关这一目的。这一款益智类游戏的开发,目的是为了使人们更多了解物理引擎游戏所带来的与众不同。在今天如此复杂多样的游戏环境中,这一款游戏所带来的新鲜感让人为之疯狂,极大展现了Java语言在开发物理运动游戏方面独有的魅力,也极大促进了Java语言在游戏方面的发展。1.2 典型的Java游戏介绍1.2.1 Minecraft介绍Minecraft是近乎是沙盒游戏的鼻祖,是由瑞典MojangAB公司和4J Studios联合开发,发行于2009年,最后在2014年冬季被microsoft以25亿美金收购。图1-1 minecraft1.2.2 Super Mario Bros介绍Super Mario Bros是任天堂游戏公司开发的,相信我们小时候都玩过这一款游戏,它几乎是所有红白机游戏中最畅销的一款,游戏风格是横版过关类型,这个游戏几乎移植到了所有已知的游戏平台,为游戏爱好者广泛而知。图1-2 Super Mario Bros1.2.3 The Sims介绍这是一款由Electronic Arts,简称EA开发的以模拟一个人生活中各种事情为主的模拟养成类游戏,。在这个模拟的世界中,玩家可以操作游戏人物进行近乎于现实生活的行动,仿造真实的情境,控制生理和精神的需求。图1-3 The Sims1.3 游戏开发的意义随着计算机科学的发展,游戏的发展已经取得非常显著的成果。图形计算、应用数学、数据结构、算法设计,甚至网络安全都已经应用在强大的游戏引擎中,而且由于快速做出原型是游戏开发的重要组成部分,所以应该学习如何高效率编写可重用的代码是一个很值得关注的问题。即使游戏没有为他人做出贡献,但至少它给了我很多的灵感,让我认识到作为一个程序员的兴趣所在,我可以继续为未来所需的知识量而努力。况且,游戏已经影响到人类生活的方方面面,成为生活不可或缺的一部分。甚至来说,游戏作为一种产业,已经跻身到互联网这个巨大的利益链的前列。目前,中国的游戏产业已然成为一个新的经济增长,极大地刺激了中国经济的发展,成为了中国六大支柱产业之一。游戏的发展不仅带来了经济的利益,同时也极大地丰富了人类的生活,增强人们的幸福感,但游戏也存在不可避免的弊端,所以积极宣传中国传统文化,引导青少年健康游戏、快乐游戏应该是,每个游戏工作者的责任和义务。2 开发环境2.1 开发语言Java语言是一种面向对象的编程语言,它不仅拥有着C+语言的长处,而且也将C+中的多重继承和指针等概念进行摒弃,Java语言不仅具有易用实用的特征,同时也是一种功能强大的编程语言。Java语言的特征大致可以分为以下一些:简单性、面向对象、分布式开发、稳健性、安全性、平台独立性、可移植性和多线程以及动态特性。这些特性以及Java语言本身的强大,是Java语言得以风靡全球的根本原因。Java语言从外部看起来确实很像C+语言,但是为了使Java语言不那么晦涩难懂和难于学习,开发设计人员将很多原本用于C+语言的功能进行选择性删除。比如:Java语言将重载和多个继承功能中的重载运算符排除在外,并且去除主文件,从而消除了预处理器。再由于Java语言准确的是没有结构的,并且字符串数组是对象,所以指针存在也是不必要的。去除C+语言的糟粕后,Java语言可以自动管理参考对象和间接引用、自动垃圾收集,这些功能都可由使用户不必担心内存管理问题,从在将更多的时间和精力投入到研发开发当中,无疑是大大提升了编程开发效率。如图2-1为Java语言总体特点:图2-1 Java语言特点由于Java语言是面向对象的语言。所以对于程序员来说,这意味着数据必须在方法中声明和操纵,笼统来说,程序员只需要学习对方法的熟悉和使用,而不是严格的创造方法过程。Java语言的特点使得语句不单单依赖于实现的方面,这种特殊的特点使得Java环境本身对新的硬件平台和操作系统是可移植的,并且起重要作用的Java编译器也是用Java语言所编写的,而且还包括用ANSIC语言编写的Java运行时系统。Java语言旨在适应进化,这说明它是一种动态语言。由于Java语言的本质,Java游戏不会受到太多来自软件运行平台的诸多限制。假如我们以Java语言进行开发时,哪怕要重新编译成千上万个类,也只不过是花费很少的时间便可以办到的事情,这是CPP编译速度所无法企及的。而Java语言语法在一定程度上要比C语言或者C+语言简洁方便很多,开发者只需要掌握一些基本语法,久而久之的学习,绝大多数人都可以使用Java语言轻易地进行开发程序。本文将以电脑为基础,采用Java语言来编写一款叫做“愤怒的小鸟”的游戏。2.2 开发工具Eclipse是一个将源代码的开放、基于Java语言的具有可扩展性的编程开发平台。就其本身而言,它仅仅只有一个框架与一组服务,将其通过插件组件来构建成一个开发环境。比较需要注意的是,Eclipse 还附带着一个标准的插件集,插件集中包含了各种开发工具,比如用于Java语言开发的Java开发工具(Java Development Kit,JDK)。Eclipse是著名的跨平台开发环境和自由集成开发环境的组合。它最初主要是用于Java语言的开发,在Eclipse中通过安装不同的插件,使得Eclipse具有可以支持不同的计算机语言的特性,比如C+语言和Python语言等开发语言。Eclipse简单来说,它本身仅仅只是一个框架平台,但是各种各样插件的支持使得Eclipse具有其他功能死板IDE软件所难以拥有的方便灵动性,这一特性让许多软件开发公司都将以Eclipse作为基本框架来开发属于自己的IDE。Eclipse起始于1999年4月,它最开始是由OTI和IBM这两家巨头公司的IDE产品开发项目组合力创建,。Eclipse基础代码最初是由IBM提供的,其中包括JDT 、PDE 和Platform。Eclipse项目经由IBM发起,经过这么多年的发展, Eclipse这一当初小小的项目已然发展成为了一个巨大的Eclipse联盟,目前为止,大概有140多家软件公司先后参与到Eclipse开发项目中,其中包括Red Hat和Sybase等公司。Eclipse本身作为一个开源的项目,它的初衷作为是作为Visual Age for Java的替代品,所以Eclipse的界面效果与早期版本的VisualAge for Java相差不大,后来随着开放源代码,任何开发人员不仅可以免费得到Eclipse,而且可以在它的基础上进行各自插件的开发,这一缘由导致Eclipse受到越来越多的人的欢迎。在此之后还有包括Oracle等在内的许多软件大公司也先后加入了该项目,使得Eclipse到目前为止已经成为任何语言开发的IDE集成者,也是Java语言开发使用最广泛的平台。2.3 JDK介绍JDK是Java语言的软件开发工具包(Java Development Kit),它在java语言开发中占有核心的地位,它包括Java的运行环境,java的基本工具和java的基础库等。JDK包含的基本组件包括:javac 编译器:javac编译器自动读取由java语言编写而成的类和接口的定义等,并将它们编译成字节代码(class文件)。jar打包工具:将相关的类文件整合为一个文件javadoc文档生成器:从源码中将注释提取为一个文档jdb debugger:调试工具jav:可将编译后的java程序(.class后缀的程序)运行appletviewer:可在脱机环境的情况下运行applet。Javah:创建一个可以被Java程序所调用的C过程的头文件。Javap:一种进行反编译的工具。Jconsole: Java中可以对系统进行监控和调试的工具。如下图2-2所示:图2-2 JDK基本组成2.4 Java Awt介绍AWT(Abstract Window Toolkit),中文翻译是:抽象窗口工具包,该包提供了一个GUI交互的接口,Java提供了用于创建和配置Java GUI的基本工具。AWT中图形操作函数与系统中图形功能之间提供了一对一的关系,称为peeres,当开发者使用AWT编写图形用户界面时,实际上是使用本地操作系统所提供的图形库。由于各种操作系统的风格和功能不同,所以提供的图形库不一样,在一个平台上可能存在的功能反而在另一个平台不存在。为了实现“写一次(编写一次,任意平台都可以运行”)Java语言的概念,AWT必须以牺牲独立平台功能为代价,由各种系统提供的AWT图形功能的交集来作为awt图形功能的可用功能。如下图为awt的几种基本布局:图2-3 awt的几种基本布局AWT在基础组件(components)的GUI应用于提供JavaApplet和Java Application。 由于Java是一种独立于平台的编程语言,而是通常将GUI链接到特定的平台,Java技术允许使用相应的AWT可以提供一个平台接口独立应用于某个机器,这保证了相同的程序操作GUI 在不同的机器上具有相似的界面效果(但是并不能保证一定相同)。来自AWT Java1.0(旧AWT)的和AWT Java1.1(新AWT)之后的有着截然不同的情况,新的AWT相比于旧的AWT有这更显着的改进并且摒弃了很多缺点,从而新的AWT可以更加方便的使用,这篇论文主要是讨论新的AWT,但不可否认在Java1.1中更旧版本的AWT程序也可以运行。Abstract Window Toolkit(AWT)使用Java语言来操纵位图显示窗口,为一个图形过程库。 最后,扩展设计人员将AWT扩充为AWT Window Alternative Toolkit和Applet Widget Toolkit。 最新的图形界面叫做Swing,扩展了AWT,Swing应用程序开发人员可以使用它来生成独立的GUI平台对象。2.5 Java Swing 介绍Java Swing 作为一个GUI工具包,是专门为Java设计与使用的,也是Java基础类的一部分,其中包含的一些组件如文本框、分割窗格、表格、按钮等Java Swing可以提供的屏幕显示元素,在某种程度上要比Java Awt提供的要好的多。由于Java Swing使用纯Java语言编写的,在这一点上不与AWT相同,所以Java Swing拥有与Java语言一样的可扩展性,可以在多种平台上使用,并且Java Swing也是JFC的一部分。Java Swing可以对面板和主题进行变更(操作系统中存在着默认的主题,不同操作系统的主题不尽相同),这并不是真正的去使用这种操作系统的设备,只是在一定程度上在表面上模仿。这些特殊的功能导致程序猿可以可以使用Java的任何面板,并且不需要操作系统的限制。如下图2-4为Java swing 基本组成:图2-4 Java swing 基本组成JFrame: java中的GUI是以JFrame为基础的一种基本思路,它是屏幕上创建window的对象,通过调用一些特定的方法,可以实现界面的最大化、最小化、关闭。 JPanel:作为Java GUI 下的swing中的面板容器类,它包含在javax.swing 包中,使用的时候可以对其进行嵌套,它的功能是在窗体的使用中对其具有相同逻辑功能的组件进行整合,同时也是是一种轻量级容器,使用中可以加入到JFrame窗体中。JLabel:JLabel 对象的功能是可以将文本、图像进行显示或同时对二者进行显示。它有垂直和水平两种对齐方式,可以指定标签显示区中的标签内容在任意一处进行对齐。通常默认情况下,标签默认在显示区域内居中垂直对齐,而且,显示文本的标签是开始一种边对齐,显示图像的标签则是居中水平对齐。JTextField:它可以进行编辑单行文本,是一个轻量级的组件。JPasswordField:功能是让我们输入了一个文本框类似于输入框,但是在输入密码的时候讲密码进行隐藏,类似替换成*符号。JButton:JButton 类的实现类,功能是在面板中创建按钮,可以对齐进行点击之类的操作。比如我们经常使用的登录、注册按钮。2.6 Java语言开发平台搭建首先登陆到官方网站,之后跳转到JDK下载页面下载Java JDK ,版本选择最新的jdk1.8.0_131进行下载,下载界面如下图2-5所示:图2-5 下载JDK下载完成后安装JDK,安装路径为F:Javajdk1.8.0_131,安装路径如下图2-6所示:图2-6 安装路径安装完成JDK之后登陆网址https:/www.E,进行下载Eclipse,下载界面如下图2-7所示:图2-7 下载Eclipse下载后,安装完成打开Eclipse,点击菜单栏上的window-preference进行配置JDK,之后便可以使用Eclipse进行编程开发,配置方式如下图2-8所示:图2-8 配置JDK如下图2-9位Eclipse的基本使用界面,通过多次使用来进行熟悉即可。图2-9 Eclipse基本使用界面3系统需求分析3.1 可行性分析可行性分析是要求以经济方法和效益为核心进行全面的系统分析,围绕影响项目的各种因素、收集大量数据分析论证项目的可行性。对整个项目进行可行性研究是为了对项目进行分析和评估,突出项目的优缺点和讨论如何对项目进行改进。为了结论的可行性,经常还需要添加一些配件,如测试数据、演示材料、电子表格、图纸等,以提高可行性研究的严谨性,使其更具有说服力。3.1.1 技术可行性技术可行性是从重要技术项目执行实施的角度,合理设计技术解决方案,进行比较评估不同行业和不同深度的大型技术可行性研究项目。这一款软件开发,在硬件方面不存在特殊要求,只需要在普通的硬件配置中便可以轻松实现,但必须保证系统的正常运行,并提高效率。如果硬件特别弱、性能差从而使得系统效率低下,导致整个系统不顺畅。但对于如今的个人PC的一般配置,进行软件开发是很容易满足条件的。 因此,该系统的开发在硬件方面完全可行。操作系统选择WINDOWS操作系统,开发软件为Eclipse,该系统的设计实现在软件方面是可行的。因此可以看出,该系统的开发是没有问题的。3.1.2 经济可行性经济可行性是在资源配置、区域经济发展目标、经济资源有效配置、增加供给、创造就业机会、改善环境、改善生活等方面,对项目的价值进行评估。本基于Java开发的愤怒的小鸟游戏,需要的软硬件环境,在市场上都是很方便可以购买得到,开发人员主要是进行软件开发和简单的维护。所以人力和财力资源开发方面没有问题,开发周期长,经济可行性很大。3.1.3 操作可行性操作可行性是设想项目验证是可行的,它提出了各种方案的实施,并解释了不同方案的优缺点。该系统使用基于Java语言编写,使用个人PC安装Eclipse来进行访问和操做,并且界面简单易用,只要用户稍加以学习和多试几次,完全可以熟悉访问和操作。这一款愤怒的小鸟游戏,有着界面上易于管理和良好的互动操作等各种优点。 3.1.4 发展可行性软件生命周期的观点:随着中国游戏方面还处于成长期,这类游戏软件将会被广大用户提出需求。因此,这是游戏软件长寿的主要原因,开发一款游戏软件,合理的运营将会使它和谐的发展,而且这并不是一个太难的开发项目,它不仅可以在PC端进行操作使用,甚至可以跨平台传播,而且用户操作简单,使用起来非常方便,绝大多数用户都可以不用花费大量的时间便可以完全上手,这不仅是适应用户对游戏的追求,同时适应当前的游戏发展趋势。3.2 性能需求分析为了保证愤怒的小鸟程序的长期、稳定和有效的运作,必须保证系统的发展。 在开发基于Java语言的愤怒的小鸟程序的过程中,系统必须确保使用适当方法来保证程序的安全性和有效性。 我们必须充分考虑以下几点:安全性:在信息时代,信息是确保信息安全的重要资产,特别是个人信息也需要强大的安全性,所以在游戏个人信息保存方面,应该确保安全性是第一位。超前性:结合当今时尚潮流,开发满足用户需求,让用户总是可以第一时间获得超前的游戏体验,获得新鲜感,获得新的乐趣。可扩展性:基于Java的愤怒的小鸟游戏不仅可以在PC端进行使用,由于Java语言的可扩展性,注定这个游戏也可以进行多平台使用,更加方便的获取以及更加方便的操作。3.3 功能需求分析需求分析是对用户需求和要求的分析。需要准确评估用户需求的结果从而反映实际用户需要,这将直接影响整个设计的流程,也会对系统的使用产生影响。关注需求评估来完成调查收集和研究,可能会受到数据管理和信息安全过程的影响。一般用户相对于开发者来说,绝大部分用户都是缺少计算机相关知识,并且无法确定计算机是否可以为自己做到或者做不到一些事情,准确表达他们的需求是需要的,必须通过跟用户的深入了解来获取用户的需求从而准确的确定计算机的功能。搜索用户分析和细化特征等用户的描述的信息是必要的。它是软件开发过程的第一阶段主要部分,主要任务是了解您需要什么,需要做个什么样的系统,使完整的目标系统拥有清晰准确的功能,并且可以进行书面表达。在愤怒的小鸟程序中,主要实现以下功能游戏玩法功能:(1) 能实现发射器创建、发射角度、发射力度等(2) 可以实现小鸟飞行功能,包括小鸟飞行抛物线、小鸟飞行悬停(3) 实现游戏中猪的移动功能,包括猪的根据级别不同改变移动速度、猪在哪里移动(4) 碰撞功能:实现小鸟与障碍的碰撞、小鸟与猪的碰撞、鸡蛋与障碍物的碰撞、鸡蛋与猪的碰撞、猪与障碍物的碰撞页面管理功能:实现各个页面功能,包括主界面、载入游戏界面、控制帮助界面、跳转界面功能等难度、级别功能:实现游戏难度功能,难度不同猪的移动速度不同,实现级别功能,级别不同地图难易程度也不同实体类管理功能:创建游戏中各种实体类,包括鸟的种类、猪、障碍物、草地等玩家管理功能和备份功能:实现玩家信息管理以及游戏信息保存的功能如下图3-1所示:图3-1 总体功能需求图3.4 系统UML分析UML是在面向对象的方法Booch,TMO,OOSE等基础上开发的方法,以及根据许多其他方法和材料的基础从而衍变出来的。 UML符号是为各种图形符号表示,消除混淆、冗余符号或很少使用以及容易导致的图形符号,同时添加一些新的图形符号。UML是统一建模语言的缩写,也称为统一建模语言。它是用于可视化建模的一种语言。 UML是开发人员用于建模事物的客观标记,同时也为开发人员了解什么样的系统工作以及整个过程做出了准备工作。 现在我们在这个基础上对愤怒的小鸟进行建模分析,UML用例图如下图3-2所示:图3-2 UML界面用例图图3-3 UML游戏操作用例图3.5界面需求分析目前,界面设计已成为软件质量评估的重要指标,良好的用户界面能提高用户操作系统的信心和增加兴趣、提高效率。 客户界面是指与用户与机器进行交互的软件系统界面,通常覆盖界面格式输出,输入和其他人机对话。1.输出设计输出是游戏程序解决基本信息的输入,产生高质量的正确信息,并使其具有一定的格式,供管理人员使用,这是发布设计和目标的主要责任和目标。与系统开发过程的实现不同,不是从输入设计到输出,而是输处设计到输入到设计。 这是因为输出表与用户直接链接,应设计为确保用户可以方便地使用输出表格,及时将有用的信息可以反映在各个部门。 2.输入设计收集和输入输出数据更加不方便,需要大量的人力物力,而且经常出错。 一旦不正确的数据输入系统,处理后的输出会扩大这些错误,所以输入数据的准确性对系统的整体性能起决定性的作用。输入设计有以下几点原则:1)输入量必须最小程度的满足处理要求。 输入数据越少,错误率会越小,数据准备时间也较少。2)如果可能的话,尝试尽可能方便的准备和输入过程,以减少更多的发生错误发生率。3)尽早检查输入数据(尽可能靠近原始数据生成点),及时进行纠错更改。4)可能会尽可能早地将输入数据记录所需的处理形式进行记录,以防止从一个介质传输到另一个介质而可能发生的转录数据错误。4 系统设计4.1系统流程设计在设计开发基于Java语言的愤怒的小鸟的时候,必须先进行需求分析,这样才可以对系统总体进行概括性规划,从而进行系统功能模块的设计、测试、基于Java语言的愤怒的小鸟的总体设计流程图,如下图4-1所示:图4-1 总体流程设计图该程序在游戏概念和属性中使用面向对象的模型。 运行程序后,用户可以选择运行选项菜单,屏幕刷新屏幕重新设计一定频率,实时反映游戏状态。如下图3-2显示了游戏控制的流程图。 首先,当游戏运行时会成为测试的关键角色,同时响应方向。 这是对鸟类在屏幕的主要方向的响应,同时检测释放的鸟类的强度。 如果你摧毁对象超过一个固定的分数,导致游戏结束。 当物体被鸟类摧毁时,根据物体的破坏得到不同的分数。同时,还有其他检测键,主要用于检测菜单键。 菜单按钮包括检测输出和返回参数。 当游戏检测到退出按钮时,游戏结束。 当检测到游戏的返回键时,游戏将返回到主屏幕。图4-2 游戏控制流程图 4.2 系统架构设计系统架构设计模型采用MVC经典建模模型,使用面向对象设计思想来帮助实现。 MVC全名模型视图控制器(Model-View-Controller),M、V、C分别是指逻辑模型、指视图模型、控制器。MVC已经开发成了用于图形用户界面中常规映射输入,处理和输出逻辑功能的独特结构。我们参考的模型是一个对应于多个逻辑模型的视图模型,我们使用这个模型将视图模型的代码和逻辑模型的代码分开,以便我们可以以不同的形式实现相同的程序,然后控制台的控制着两者同时工作,其中一个变化, 另一个应该同时更新。用户对此模型的最大优势是根据自己的方式选择更加适合自己的方式来浏览数据。 对于那些开发人员来说,这种模式的最大优点就是分离界面和应用程序的逻辑层,这个界面和程序员的设计者可以在格子的领域工作,而不会互相干扰。Model(模型):GameModel():实现游戏主要功能,包括碰撞、发射、得分。Level():实现游戏难度、地图功能。LevelNumber():存储地图功能ListChangedEvent()、ListListener():碰撞功能的监听Player():玩家备份功能Entity()、Bird()、Block()、Egg()、Enemy()、EntityThread()、Grass()、HummingBird()、Pig()、Pigeon()、Sparrow() :定义游戏中各种模型的实体类。图4-3 游戏实体类图View(视图):GameView():实现游戏中发射皮筋功能GameViewMenu():实现背景界面及标题功MenuDifficultyView():实现难度选择界面MenuHomeView():实现主界面MenuLevelView():实现级别选择界面MenuLoadView():实现确认及删除界面MenuNewView():实现增加玩家信息界面MenuOptionsView():实现控制帮助Controller(控制器):GameController():实现监听事件(键盘,鼠标,更改实体列表)MenuController():实现菜单控制界面跳转等功能图4-4 游戏总体类图5 详细设计5.1 主界面实现 (见图5-1)当玩家开始游戏时,共有4个选择:开始一个新游戏,加载一个保存的游戏,了解游戏控制或离开游戏。 如果启动新游戏,则需要输入其名称,以创建备份。 如果决定加载保存的游戏,玩家从已经备份的名称中进行选择。如果点击控制帮助选项,玩家将会看到游戏控制的帮助内容,以便更好的了解游戏、更容易上手。如果选择退出游戏,则游戏会立刻关闭。图5-1 主界面部分代码以及相应的页面布局:public class MenuHomeView extends GameViewMenuprivate JButton newButton,loadButton,optionsButton,exitButton;public MenuHomeView() newButton = new JButton(新游戏); newButton.setSize(250,40); newButton.setLocation(frameWidth/2-115, 150); loadButton = new JButton(载入游戏); loadButton.setSize(250,40); loadButton.setLocation(frameWidth/2-115, 225); optionsButton = new JButton(控制帮助); optionsButton.setSize(250,40); optionsButton.setLocation(frameWidth/2-115, 300); exitButton = new JButton(退出游戏); exitButton.setSize(250,40); exitButton.setLocation(frameWidth/2-115, 375); backButton.setVisible(false); this.add(newButton,new Integer(1); this.add(loadButton,new Integer(1); this.add(optionsButton,new Integer(1); this.add(exitButton,new Integer(1);public JButton getNewButton()return newButton;public JButton getLoadButton()return loadButton;public JButton getOptionsButton()return optionsButton;public JButton getExitButton()return exitButton;5.2 游戏玩法实现(见图5-2及5-3)选择一个级别后游戏开始。 首先玩家必须选择弹出一只鸟(游戏中总共有三只鸟供玩家使用),根据鸟的特点,玩家可以决定在飞行期间是否停止鸟,同时鸟也可以扔一个鸟蛋(鸟蛋的数量取决于不同的鸟的种类)。 玩家可以使用鸟蛋碰撞或直接鸟本身碰撞消灭阻碍物。 最后,玩家还可以借助鸡蛋或鸟类本身杀死绿猪,有时可能需要摧毁阻碍物才能到达消灭某些猪的目的。图5-2游戏玩法图图5-3为刚进入游戏时的界面,右上角显示还剩下几种鸟可以使用以及剩余鸟的数量,金色的蛋表示鸟剩余蛋的数量图5-3 游戏内容图1图5-4 游戏内容图2图5-4表示鸟在飞行过程中的状态,飞行中可以按S键将小鸟悬停在空中,然后可以按space键释放鸟蛋部分代码(创建面板以及地图的代码)以及相应的页面布局:public GameView(ArrayList entities) setFocusable(true); setDoubleBuffered(true); ImageIcon img1 = new ImageIcon(slingShotName1); slingShotImg1 = img1.getImage(); ImageIcon img2 = new ImageIcon(slingShotName2); slingShotImg2 = img2.getImage(); this.entities = entities; public void paint(Graphics g) super.paint(g); Graphics2D g2d = (Graphics2D)g; g2d.drawImage(map.getImage(), 0, 0,frameWidth,frameHeight, this); g2d.drawImage(slingShotImg2, 100,412, this); int k = 0; for(int i = entities.size()-1; i =0;i-) Entity e = entities.get(i); if(e instanceof Bird & e != currentBird) g2d.drawImage(e.getImage(), frameWidth-100-k*15, 100,e.getImageWidth(),e.getImageHeight(), this); k+; if(e = currentBird) Egg egg = new Egg(0,0,28,30); for (int j = 0; j currentBird.getEggLeft(); +j) g2d.drawImage(egg.getImage(), frameWidth-100+j*15, 20, this); for (Entity e : entities) if (!(e instanceof Bird) g2d.drawImage(e.getImage(), (int) e.getPosition().getX(), (int) e.getPosition().getY(), this); if(e= currentBird ) g2d.setStr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全工程试题及答案
- 城市快速路建设项目2025年社会稳定风险评估与城市规划与社区互动研究报告
- 工业互联网平台入侵检测系统2025年数据安全防护方案报告
- 《库存管理》课件
- 冬季换季教育培训课件
- 中国发展动态课件
- 数码影像培训课件
- 周末安全教学课件
- 员工职业规划课件
- 团委培训分享交流
- 2024年石家庄市市属国有企业招聘考试真题
- 医院火灾的应急预案及处理流程
- 2025年山东省烟台市中考真题数学试题【含答案解析】
- 种猪养殖场建设项目初步设计方案
- 中位数与箱线图-第2课时箱线图复习巩固课件北师大版(2025)数学八年级上册
- 2025河南省豫地科技集团社会招聘169人笔试参考题库附带答案详解
- 2025年山东将军烟草新材料科技有限公司招聘笔试冲刺题(带答案解析)
- 2025年外研版(2024)初中英语七年级下册期末考试测试卷及答案
- 人教版(2024)七年级下册英语期末模拟测试卷(含答案)
- 兵团开放大学2025年春季《公共关系学》终结考试答案
- 2024年贵州贵州贵安发展集团有限公司招聘笔试真题
评论
0/150
提交评论