首页 基于java的推箱子游戏

基于java的推箱子游戏

举报
开通vip

基于java的推箱子游戏基于java的推箱子游戏 仰恩大学毕业设计(论文) 摘 要 在这个充满竞争的社会里,随着生活节奏的不断加快,人们的生活水平越来越繁忙,因此,越来越多人感到无比的烦躁与巨大的压力,这些压力也带给人们诸多烦恼。所以如何解除现代人的生活压力,释放心中苦闷已经成为现代人的共同心愿。而本次的这个基于JAVA的推箱子小游戏正是使用JAVA语言并且结合于EditPlus编译器,为大家开发了一款适合的、休闲娱乐的游戏,在娱乐的同时也给忙碌的上班族们开拓了另一个思考问题的空间。 基于JAVA的推箱子小游戏主要分为初始化模块,...

基于java的推箱子游戏
基于java的推箱子游戏 仰恩大学毕业 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 (论文) 摘 要 在这个充满竞争的社会里,随着生活节奏的不断加快,人们的生活水平越来越繁忙,因此,越来越多人感到无比的烦躁与巨大的压力,这些压力也带给人们诸多烦恼。所以如何解除现代人的生活压力,释放心中苦闷已经成为现代人的共同心愿。而本次的这个基于JAVA的推箱子小游戏正是使用JAVA语言并且结合于EditPlus编译器,为大家开发了一款适合的、休闲娱乐的游戏,在娱乐的同时也给忙碌的上班族们开拓了另一个思考问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 的空间。 基于JAVA的推箱子小游戏主要分为初始化模块,画图模块,移动小人模块,移动箱子模块以及功能控制模块。玩家是通过控制小人的移动来推动箱子,需要避过障碍物与死角才能将其推放到指定位置从而达到过关的目的。每关的难易程度各异,不仅适合人们休闲娱乐,还有助于开发智力,提高人们思考问题能力与想象能力,改善思考方式,拓展思维。 关键词:JAVA;解压;推箱子;休闲娱乐 I 仰恩大学毕业设计(论文) Abstract In this competitive society, along with the accelerating pace of life, people's living standard more and busier, therefore, more and more people feel very upset and enormous pressure, the pressure also gives people a lot of trouble. So how to relieve the pressure of modern life, release the pain has become the common aspiration of the people. But this time based on the JAVA Push Box Game is the use of JAVA language and the combination of EditPlus compiler; we developed a suitable, recreational game, in the entertainment but also for busy office workers to develop another thinking space. Based on the JAVA Push Box Game consists of initialization module, drawing module, mobile SIM module, mobile box module and control module. Game player is controlled through a small mobile drive box, need to avoid obstacles and dead angle can be pushed into the specified location so as to achieve the purpose of clearance. Each level of difficulty degree is different, not only for recreation, also contribute to the development of intelligence, improve people's thinking ability and imagination ability, improve the way of thinking, the development of thinking. Key Words:JAVA; Relieve pressure; Push box; Recreation and entertainment II 仰恩大学毕业设计(论文) 目 录 摘 要 ............................................................................................................................... I Abstract ................................................................................................................................. II 引 言 ...............................................................................................................................11(可行性研究 ......................................................................................................................2 1.1设计目的 ..................................................................................................................2 1.2可行性研究前提 ......................................................................................................2 1.3可行性分析 ..............................................................................................................2 1.4结论意见 ..................................................................................................................3 2(需求分析 ..........................................................................................................................4 2.1引言 ..........................................................................................................................4 2.2游戏需求 ..................................................................................................................4 2.3软硬件需求 ..............................................................................................................4 硬件环境需求:.....................................................................................................4 软件环境: ............................................................................................................5 2.4接口控制 ..................................................................................................................5 2.5 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 论证 ..................................................................................................................5 2.5.1.C++语言的优点 .............................................................................................5 2.5.2.Java语言的优点 ............................................................................................5 2.5.3.方案选择 .......................................................................................................6 3(概要设计 ..........................................................................................................................8 3.1游戏设计分析 ..........................................................................................................8 3.3.1.地图文件的引用 ............................................................................................8 3.3.2.程序运逻辑 ....................................................................................................8 3.3.3.绘图 ...............................................................................................................8 3.3.4.显示平台 .......................................................................................................8 3.2 注意事项 .................................................................................................................9 3.3 游戏流程图 .............................................................................................................9 4.详细设计 ........................................................................................................................... 10 4.1游戏总体结构与代码 ............................................................................................. 10 结 论 ............................................................................................................................. 22 III 仰恩大学毕业设计(论文) 参 考 文 献 ........................................................................................................................ 23 致 谢 ............................................................................................................................. 24 IV 仰恩大学毕业设计(论文) 引 言 在人类的社会生活当中,游戏占有很大的比重,并且随着社会的发展而不断发展。而且游戏本身具有激发人类潜在行为的特质,是一种能够吸引人们参与其中的活动,其本身具有强烈的吸引力使游戏者卷入其中;再者适当的游戏、合理的时间安排,能够让玩家在娱乐的同时还可以锻炼其反应速度及灵敏程度,学习到一些在学校里、课堂上学不到的知识与技能,亦可让玩家从压力中释放出来。因此游戏逐渐成为人们生活中不可缺少的一部分,游戏产业也正逐步发展成熟。 经典的推箱子游戏是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。而且在如今科学技术不断发展的时代,推箱子小游戏的样式也趋于完美步调,当然这个世界上并没有绝对完美的东西,但就相对推箱子小游戏而言,如此巨大的发展也令人感叹。精美的画面,丰富的效果,以及方便的操作体现了推箱子小游戏的不断创新。 1 仰恩大学毕业设计(论文) 1(可行性研究 1.1设计目的 综合运用在校期间所学到的理论知识和技能,并且结合课外参考资料,设计开发基于JAVA的推箱子小游戏,让自己能够熟悉并熟练应用系统的开发过程,培养独立思考能力,检验学习成果和实际动手能力,以及提高工程实践能力,为今后的工作打下坚实的基础。 1.2可行性研究前提 基本需求:系统开发的总体任务是实现游戏的可操作性、美观性、及时性。开发过程遵循软件工程规范,可采用结构化或面向对象分析设计方法。主要实现windows的GUI程序开发,对游戏中的图形图像进行键盘控制。玩家可以通过控制上下左右键来对游戏进行操作。 主要开发目标:采用结构化设计方法,开发出一个操作简单、界面简洁美观、适合休闲娱乐的小游戏,实现Windows的GUI程序开发,并通过此次软件开发过程全面提高自身的综合素质。 条件假定和限制:由于对编程语言的学习以及理解还不是很到位,因此本小游戏可能会存在某些问题以及不足之处。如果该软件要提高版本,本软件则需要根据玩家的要求进行进一步的修改。 可行性研究所采用的方法和步骤:通过研究分析推箱子小游戏所需要的功能以及实现的方法、确定主体结构。利用所学到的知识,以最简洁、最容易的办法,边开发边测试边修改,实现一个初级游戏软件。 评价尺度:由于本软件是一个初级产品,对其要求不是太苛刻,所以能够达到推箱子小游戏的一般功能即可。 1.3可行性分析 管理可行性: 该游戏软件的目的是为了提高自身素质以及检查所学习JAVA的效果,运用JAVA语言编写后在EditPlus编译器中运行简单明了,所有功能均根据基本需求所做,便于管理,所以在这方面是可以实现的。 经济可行性:由于本游戏的主要背景是毕业课程设计,不注重直接的经济效益和其后的发展方向,关键注重于自身编写程序的水平以及其能力的提高,对自身的经济要求 2 仰恩大学毕业设计(论文) 也不高,只要有一台能运行JAVA软件和EditPlus编译器的电脑即可,所以可以不用考虑经济方面的相关问题。 技术可行性:对于本游戏,可以使用如VB,Java,Delphi等相关的编程语言,但是考虑到编写程序的难易程度以及对编译语言的了解程度,本游戏选择JAVA程序语言作为编程语言。需要对变量定义、变量初始化、界面初始化、游戏初始化等,然后就可以进入游戏,处理游戏过程中的各种操作。 社会可行性:本游戏的开发是作为毕业课程设计的,用来巩固先前所学的知识,是 ,可供个人或他人平常娱乐解压所用,无须考虑有可能造成的社会影响,以个人为单位的 因此可以不用考虑到法律、版权等的社会因素,所以在这方面也是完全可行的。 1.4结论意见 综上所述,本游戏软件的技术基本成熟。经分析管理可行性、经济可行性、技术可行性和社会可行性,在这些方面上均无重大问题,因此能够达到此次设计所预期的目的,所以可开始着手编写本次小游戏。 3 仰恩大学毕业设计(论文) 2(需求分析 2.1引言 对软件需求的完全理解,对于软件开发工作的成功与否是至关重要的,需求说明的任务是发现、规范的过程,这有益于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,有助于采用工程方法开发软件,提高软件的质量,还有利于开发人员、维护人员、管理人员之间的交流以及协作,并且可以作为工作成果的原始依据;再者,亦可在向潜在用户传递软件功能、性能需求,使其能够判断该软件是否与自己的需求相符合。 2.2游戏需求 玩家是通过对小人的移动操作来控制推动箱子的,并且玩家需要避过障碍物以及死角,才能将其推放到指定位置从而达到过关的目的。如果玩家将箱子推入死角导致箱子无法移动或不能移动到指定位置则闯关失败,可以通过悔步或重新开始等操作来重新挑战本关。 游戏功能需求如下所示: 游戏界面需求:简洁美观的用户界面,可以带给用户自然清晰的画面。 游戏内容需求:良好的小人与箱子设计,可以给玩家带来更真实的感觉。小人需要前、后、左、右四张图片,移动中的箱子与终点上的箱子要所有区别,因此需要两不同的图片以示区别。 键盘处理事件:控制小人与箱子的移动,可通过键盘方向键(上、下、左、右键)对小人进行上、下、左、右的移动,并且能够推动箱子。 显示需求:当所有箱子都到达指定位置后即可过关,若进入死角则无法过关,需要进行悔步或重新开始的操作。可以由玩家喜欢选择关卡进行游戏。 2.3软硬件需求 硬件环境需求: CPU:PentiumIII 600以上; 内存要求:600MB以上; 内存剩余资源:128MB以上; 4 仰恩大学毕业设计(论文) 软件环境: JDK 1.5及其以上的版本。 2.4接口控制 本小游戏需要通过键盘进行操作,在Windows的操作系统下,利用键盘的上、下、左、右键控制小人的行动来推动箱子,要使用键盘的接口事件。 2.5方案论证 学校开设的关于学习编程语言的课程有C++语言、Java程序语言等,皆可用于编写推箱子小游戏的程序。 2.5.1.C++语言的优点 C++语言是对C语言的扩充,扩充的绝大部分来自著名语言中的最佳特性:从SIMULA 67中吸取了类,从ALGOL 68中吸取了运算符一名多用、引用和在分程序中任何地方说明变量,综合了Ada的类属和Clu的模块特点,从BCPL中吸取异常处理,从BCPL中吸取了用//表示注释。 C++语言保持了C语言的紧凑、灵活、高效和易移植强的优点,它对数据抽象的支持主要在于类概念和机制,对面向对象风范的支持主要通过虚拟函数。C++语言既有数据抽象和面向对象能力,语言运行性能高多,加上C语言的普及,而从C语言至C++语言的过渡较为平滑,以及C++语言与C语言的兼容程度可使数据巨大的C语言程序能方便地在C++语言环境中重用。 尽管C++语言当初的设计本意是帮助管理大型程序,但其用途并不仅限于此。C++语言的面向对象的特性可有效地用于实际的程序设计工作。C++语言常常用于设计编辑器、数据库、个人文件系统以及通讯程序等。而且,由于C++语言共享C语言的效率,所以用C++语言可以构成很多高性能的系统软件。 2.5.2.Java语言的优点 Java是定义位于网络计算的计算机语言,其技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。这些特点使得Java语言特别适用于用来开发网络上的应用程序;另外,作为一种面世较晚的语言,Java语言也集中体现和充分 5 仰恩大学毕业设计(论文) 利用了若干当代软件技术新成果,例如C++语言、面向对象、多线程等等,它们所拥有的优点都让Java语言收入其中。 开台无关性。如前所述,Java语言独特的运行机制使得它具有良好的二进制级的可移植性,利用Java语言,开发人员可以编写出与具体平台无关、普遍适用的应用程序,大大降低了开发、维护和管理的开销。 Java是面向对象的编程语言。面向对象技术较好地适应了当今软件开发过程中新出现的种种传统面向过程语言所不能处理的问题,包括软件开发的规模扩大、升级加快、维护量增大经及开发分工日趋细化、专业化和 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 化等,是一种迅速成熟、推广的软件开发方法。面向对象技术的核心是以更接近人类思维的方式建立计算机逻辑模型,它利用类和对象的机制将数据与其上的操作封装在一起,并通过统一的接口与外界交互,使反映现实世界实体的各个类在程序中能够独立、自治、继承;这种方法非常有利于提高程序的可维护性和可重用性,大大提高了开发效率和程序的可管理性,使得面向过程语言难于操纵的大规模软件可以很方便的创建、使用和维护。 安全稳定可靠。对网络上应用程序的另一个需求是较高的安全可靠性。用户通过网络获取并在本地运行的应用程序必须是可依赖的,不会充当病毒或其他恶意操作的传播者而攻击用户的本地资源;同时它还应该是稳定的,轻易不会产生死机等错误,使得用户乐于使用。 。多线程是当今软件技术的又一重要成果,已成功应用在操作系统、可以支持多线程 应用开发等多个领域。多程序技术允许同一个程序有两个执行线索,即同时做两件事情,满足了一些复杂软件的需求。Java不但内置多线程功能,而且提供语言级的多线程支持,即定义了一些用于建立、管理多线程的类和方法,使得开发具有多线程功能的程序变得简单、容易和有效。 综合先前所述,衍生自C++的Java语言,出于安全稳定性的考虑,去除了C++中不容不得易理解和掌握的部分,如最典型的指针操作等,降低了学习的难度;同时,Java还有一个十分特殊的特点,这就是它的基本语法部分与C语言几乎一模一样。这样,无论是学习过Java语言再学习C语言,还是已经掌握了C语言再学习Java语言,都会感到轻松不已。 2.5.3.方案选择 面向对象是一种认识世界的方法,是一种程序设计方法。面向对象的观点认为,客观世界是由各种各样的实体,即对象组成的。每种对象都有自己的内部状态和运动规律, 6 仰恩大学毕业设计(论文) 不同对象间的相互联系和相互作用就构成了各种不同的系统,并进而构成整个客观世界。按照这样的思想设计程序,就是面向对象的程序设计。 面向对象的程序设计吸取了结构化程序设计的先进思想,并把它们同几个支持用户用新方法进行程序设计的有力概念结合在一起。所有面向对象的程序设计语言一般都包含三个概念:封装、多态性和继承性。这种方法要求语言必须具备抽象、封装、继承和多态性这几个关键要素。 面向对象的程序设计,是通过数据和代码建立分块的内存区域,以便提供对程序进行模块化的一种程序设计方法,这些模块可以被用作样板,在需要时再建立其副本。 C++语言和Java语言在面向对象这方面都比较强,C++语言为了与C语言兼容,其是包含了些面向过程的成分;Java语言除了C++语言中非面向过程的部分,其程序编写过程就是设计、实现类,定义其属性、行为的过程。还有Java语言特有的“沙箱”机制是其安全性的保障,同时它去除了C++语言中易造成的错误指针,增加了自动内存管理等措施,保证了Java程序运行的可靠性。 因此,经过再三比较两种语言之后,采用了Java语言来编写推箱子小游戏的程序代码。 7 仰恩大学毕业设计(论文) 3(概要设计 3.1游戏设计分析 从面向对象的观念出发,本程序可分为以下几个对象: , 地图文件的引用 , 小人与箱子的移动 , 程序运算逻辑 , 绘图 , 显示平台 分析对象的技巧在于它的重复利用及维护效率。如果要把设计出来的程序在不同的显示平台上执行,就要作大幅度的更动甚至重写,这样就失去了面向对象属性,所以在本程序分析时将不变与易变的因素分别做成对象,如地图文件、小人与箱子的移动以及程序的运算逻辑就是不变的项目,而绘图及显示平台会因为环境而有所不同属于易变的项目。 3.3.1.地图文件的引用 在设计游戏程序时,通常都是把游戏的画面布局数据存放在一个地图文件中。程序通过读取地图文件中的数据来获取画面的布局安排。 地图文件是20*20的变量数组文件,在地图不同的数字代表不同的意义。把这组数据保存到一个文件中,这个文件就是地图文件了。 3.3.2.程序运逻辑 程序中逻辑运算包含小人与箱子的移动、键盘事件的响应、保存数据以实现悔步以及重新开始的操作等等。 3.3.3.绘图 绘图主要是用于在小人与箱子的移动后,原位置由草地填补,以此来表示小人与箱子的移动以及其画面的连贯性。 3.3.4.显示平台 “可移植性高”是Java的属性之一,Java的应用涉及许多领域,如手机、单机程序及浏览器等,不同的平台对于它的设定不尽相同,若将显示平台独立为一个类,将有助于主程序的完整性及移植程序的快速性。 8 仰恩大学毕业设计(论文) 3.2 注意事项 小游戏在设计时要注意绘图部分的设计代码,还要注意通过输入流读取地图文件与 图像文件部分的设计代码等等。 3.3 游戏流程图 系统功能模块 移移功初绘动动能 始图小箱控化 模人子制模块模模模 块 块块块 图1 系统功能模块 9 仰恩大学毕业设计(论文) 4.详细设计 4.1游戏总体结构与代码 推箱子的小游戏界面如图4.1所示: 图4.1 小游戏界面 由图4.1可以看出,本小游戏的界面简洁、直观,从界面中可以直接得到本小游戏的相关功能操作信息。 (1)界面框架与按钮设计 界面设计中包括了所有玩家可以直观见到的图形界面,窗体的大小,界面中的功能按钮,让玩家可以方便使用操作。界面中的按钮包括:“悔一步”,“重来”,“上一关”,“下一关”,“第1关”,“最终关”,“选关”。并且各个按钮的名称与相关功能为: “悔一步”:返回上一移动状态(可以连续返回多步); 10 仰恩大学毕业设计(论文) “重来”:重新开始当前关; “上一关”:返回到当前关的上一关; “下一关”:跳转到当前关的下一关; “第1关”:游戏系统默认开始关为第一关,此按钮让玩家可以方便从其它关卡直 接跳转到第一关; “最终关”:可以跳转到最后一关,即游戏系统默认的最后一个关。 “选关”:选择想要挑战的关卡。 其中,这个部分的部分代码为: public class GameTxz { public static void main(String[] args) { new mainFrame(); } } class mainFrame extends JFrame implements ActionListener { JButton btnrenew,btnlast,btnnext,btnchoose,btnfirst,btnover,btnback; mainpanel panel; mainFrame() { super("推箱子小游戏"); setBounds(150,20,700,690); setVisible(true); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container cont=getContentPane(); cont.setLayout(null); cont.setBackground(Color.black); btnback=new JButton("悔一步"); btnrenew=new JButton("重来"); btnlast=new JButton("上一关"); btnnext=new JButton("下一关"); 11 仰恩大学毕业设计(论文) btnfirst=new JButton("第,关"); btnover=new JButton("最终关"); btnchoose=new JButton("选关"); add(btnrenew); add(btnlast); add(btnnext) ; add(btnchoose); add(btnfirst); add(btnover); add(btnback); btnback.setBounds(20,15,80,30); btnrenew.addActionListener(this); btnrenew.setBounds(120,15,80,30); btnback.addActionListener(this); btnlast.setBounds(220,15,80,30); btnfirst.addActionListener(this); btnnext.setBounds(320,15,80,30); btnlast.addActionListener(this); btnfirst.setBounds(420,15,75,30); btnnext.addActionListener(this); btnover.setBounds(510,15,75,30); btnover.addActionListener(this); btnchoose.setBounds(600,15,75,30); btnchoose.addActionListener(this); panel=new mainpanel(); add(panel); panel.GameTxz(panel.level); panel.requestFocus(); validate(); } } (2)地图的绘制形成 地图以二维数组的形式进行存储,不同的数家代表了不同的含义。在本小游戏的地 图文件中,0~9这十个数字的定义如下所示: 编号0:代表未定义的区域; 12 仰恩大学毕业设计(论文) 编号1:代表障碍物(或者边界); 编号2:代表草地; 编号3:代表箱子(未到指定位置); 编号4:代表目的地; 编号5:代表小人向下移动方向; 编号6:代表小人向左移动方向; 编号7:代表小人向右移动方向; :代表小人向上移动方向; 编号8 编号9:代表到达指定位置时的箱子。 例如下图4.2所示(左边是二维数组的地图文件,右边是相对应的小游戏界面): 图4.2 地图文件与相应界面 (3)推箱子小游戏的游戏性 其主要功能是给用户一个良好的游戏界面,游戏中包括45关的地图文件。地图文 件是是先写好的,所有界面信息以数家的形式存放在一个20*20的二维数组当中并且把 这些地图文件统一放在一个地图文件中,便于程序调用地图文件。然后,每一关就会按 照这些数组数据重新绘制地图,从而达到小游戏的可用性及其相应的目的。 (4)小人与箱子移动的算法 小人与箱子的移动中包括了正移动以及“悔一步”的负移动。 13 仰恩大学毕业设计(论文) 正移动:小人向上、下、左、右的移动是一个判断算法,其判断都是通过判断小人前面是否是草地或者是箱子亦或者是障碍物(或者边界)。如果是障碍物或者是边界,就不能够进行移动;如果是没有箱子或者是障碍物,就可以自由移动;又如果是有箱子,就要判断是否可以移动箱子,最后再讨论箱子被推过的位置,小人移动的位置,以及它们的原位置和被遮挡住的新位置的图形变化等等,需要运用算法使其重新绘制地图,填补空白。算法判断完毕后,传出数据并且将其 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 在一个堆栈中,以备“悔一步”时使用。 负移动:通过记录在堆栈中的数据来判断,前一步小人的移动方向以及移动中使用过的算法,逆向将代码重新运行,同时绘制并刷新地图以达到前一步的状态。 其中,这个部分的部分代码为: void moveup() { if(map[manY-1][manX]==2||map[manY-1][manX]==4) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) map[manY][manX]=4; else map[manY][manX]=2; map[manY-1][manX]=8; repaint();manY--;mystack.push(10); } else if(map[manY-1][manX]==3) { if(map[manY-2][manX]==4) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) map[manY][manX]=4; else map[manY][manX]=2; map[manY-1][manX]=8;map[manY-2][manX]=9; repaint();manY--;mystack.push(11); } else if(map[manY-2][manX]==2) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) map[manY][manX]=4; else map[manY][manX]=2; map[manY-1][manX]=8;map[manY-2][manX]=3; repaint();manY--;mystack.push(11); 14 仰恩大学毕业设计(论文) } else { map[manY][manX]=8; repaint(); } } else if(map[manY-1][manX]==9) { if(map[manY-2][manX]==4) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) map[manY][manX]=4; else map[manY][manX]=2; map[manY-1][manX]=8;map[manY-2][manX]=9; repaint();manY--;mystack.push(11); } else if(map[manY-2][manX]==2) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) map[manY][manX]=4; else map[manY][manX]=2; map[manY-1][manX]=8;map[manY-2][manX]=3; repaint();manY--;mystack.push(11); } else {map[manY][manX]=8;repaint();} } if(map[manY-1][manX]==1) { map[manY][manX]=8;repaint(); } } void backup(int t) { int n=t; if(n==10) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) {map[manY][manX]=4;} 15 仰恩大学毕业设计(论文) else map[manY][manX]=2; } else if(n==11) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) {map[manY][manX]=9;} else map[manY][manX]=3; if(maptmp[manY-1][manX]==4||maptmp[manY-1][manX]==9) {map[manY-1][manX]=4;} else map[manY-1][manX]=2; } map[manY+1][manX]=8;repaint();manY++; } void movedown() { if(map[manY+1][manX]==2||map[manY+1][manX]==4) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) map[manY][manX]=4; else map[manY][manX]=2; map[manY+1][manX]=5; repaint();manY++;mystack.push(20); } else if(map[manY+1][manX]==3) { if(map[manY+2][manX]==4) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) map[manY][manX]=4; else map[manY][manX]=2; map[manY+1][manX]=5;map[manY+2][manX]=9; repaint();manY++;mystack.push(21); } else if(map[manY+2][manX]==2) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) map[manY][manX]=4; else map[manY][manX]=2; 16 仰恩大学毕业设计(论文) map[manY+1][manX]=5;map[manY+2][manX]=3; repaint();manY++;mystack.push(21); } else {map[manY][manX]=5;repaint();} } else if(map[manY+1][manX]==9) { if(map[manY+2][manX]==4) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) map[manY][manX]=4; else map[manY][manX]=2; map[manY+1][manX]=5;map[manY+2][manX]=9; repaint();manY++;mystack.push(21); } else if(map[manY+2][manX]==2) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) map[manY][manX]=4; else map[manY][manX]=2; map[manY+1][manX]=5;map[manY+2][manX]=3; repaint();manY++;mystack.push(21); } else { map[manY][manX]=5;repaint(); } } else if(map[manY+1][manX]==1) { map[manY][manX]=5;repaint(); } } void backdown(int t) { int n=t; 17 仰恩大学毕业设计(论文) if(n==20) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) {map[manY][manX]=4;} else map[manY][manX]=2; } else if(n==21) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) {map[manY][manX]=9;} else map[manY][manX]=3; if(maptmp[manY+1][manX]==4||maptmp[manY+1][manX]==9) {map[manY+1][manX]=4;} else map[manY+1][manX]=2; } map[manY-1][manX]=5;repaint();manY--; } (5)移动的代码 在本小游戏系统中,小人与箱子的移动应该是能带给玩家较为逼真的视觉感受,这 样才能体现系统的有效性与娱乐性。玩家通过控制小人,推动箱子在草地上避过障碍物 与边界死角来到达指定的终点位置。 其中,这个部分的部分代码为: void moveright() { if(map[manY][manX+1]==2||map[manY][manX+1]==4) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) map[manY][manX]=4; else map[manY][manX]=2; map[manY][manX+1]=7; repaint();manX++;mystack.push(40); } else if(map[manY][manX+1]==3) { if(map[manY][manX+2]==4) 18 仰恩大学毕业设计(论文) { if(maptmp[manY][manX]==4){map[manY][manX]=4;} else map[manY][manX]=2; map[manY][manX+1]=7;map[manY][manX+2]=9; repaint();manX++;mystack.push(41); } else if(map[manY][manX+2]==2) { if(maptmp[manY][manX]==4){map[manY][manX]=4;} else map[manY][manX]=2; map[manY][manX+1]=7;map[manY][manX+2]=3; repaint();manX++;mystack.push(41); } else {map[manY][manX]=7;repaint();} } else if(map[manY][manX+1]==9) { if(map[manY][manX+2]==4) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) map[manY][manX]=4; else map[manY][manX]=2; map[manY][manX+1]=7;map[manY][manX+2]=9; repaint();manX++;mystack.push(41); } else if(map[manY][manX+2]==2) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) map[manY][manX]=4; else map[manY][manX]=2; map[manY][manX+1]=7;map[manY][manX+2]=3; repaint();manX++;mystack.push(41); } else {map[manY][manX]=7;repaint();} } else if(map[manY][manX+1]==1) {map[manY][manX]=7;repaint();} } 19 仰恩大学毕业设计(论文) void backright(int t) { int n=t; if(n==40) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) { map[manY][manX]=4; } else map[manY][manX]=2; } else if(n==41) { if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) {map[manY][manX]=9;} else map[manY][manX]=3; if(maptmp[manY][manX+1]==4||maptmp[manY][manX+1]==9) {map[manY][manX+1]=4;} else map[manY][manX+1]=2; } map[manY][manX-1]=7;repaint();manX--; } (6)堆栈的应用 在推箱子小游戏中,数据的存储是非常重要的,不然就无法进行“悔一步”的操作。 本小游戏系统受用了堆栈的存储方式来存储并且控制小人与箱子的移动以及地图文件 的变换。而“悔一步”的操作让玩家可以进行反悔这一步操作,可避免因一时失手走错 而导致的阻塞书面,可以节省玩家重新开始的时间。 其中,这个部分的部分代码为: else if(e.getSource()==btnback) { if(panel.isMystackEmpty()) JOptionPane.showMessageDialog(this,"您还未移动!"); else { switch(panel.back()) { case 10:panel.backup(10);break; case 11:panel.backup(11);break; 20 仰恩大学毕业设计(论文) case 20:panel.backdown(20);break; case 21:panel.backdown(21);break; case 30:panel.backleft(30);break; case 31:panel.backleft(31);break; case 40:panel.backright(40);break; case 41:panel.backright(41);break; } } panel.requestFocus(); } 21 仰恩大学毕业设计(论文) 结 论 通过编写本次毕业设计程序,我完成了基于JAVA的推箱子小游戏的软件开发任务。在些其间,我遇到了许多问题,如地图文件的制作与读取、游戏界面过大或者过小、游戏图形的大小问题、小人与箱子的移动算法、堆栈算法的编写、悔步等操作的处理等等。不过,最终我都一一解决了相关问题,对其中比较主要的几点体会总结如下: 第一,为了熟悉推箱子小游戏的相关运作,我经常在电脑游戏上运用推箱子游戏,一步步地发现它所有的功能,然后再思考与查阅资料进行分析,最后经过逐步的设计与反复的修改论证,才完成了整个小游戏的开发。 第二,完成了从“小到全”,从“全到精”的转变。在设计的过程中,我经常会遇到一些困难,我也借此机会学会如何通过反复思考和测试找出自己的错误并加以改正,再进行下一个步骤的设计。本程序就是这样一点一点的完成的,在这之后再来优化整个程序。 第三,本次设计也让我得到一个不断学习新鲜事物的机会,从设计初的诸多不懂到最后能够顺利完成,期间我体会到在实践中学习的重要性,这对于将来我走上工作岗位具有重要意义。 第四,通过毕业设计使我对Java这门课程加深了解,也对我今后的就业之路奠定了一定的基础。 经过这些日子的不断努力,本次的毕业设计程序基本上完成了。回顾整个设计过程,我学到了许多书本上没有学到的知识。通过这次自己制作的软件,丰富了自己的实践技能,扩展了本专业的知识面,不仅使我受益匪浅,同时也体验到了开发软件开发的难度与不断更新自己的重要性。由于我是初次涉及这类开发软件,因此这其中或许还有很多的不足之处,界面的设计及整体的布局还比较简单,没有特别突出的特色,这也是我今后所要充实之处,在这里也恳请各位老师能够对我的作品指明不足并加以改正。 总体来说,这次毕业设计还是比较成功的,这也是我在大学四年来完成的一个比较全面的实际例子。在这次设计的过程,我也查阅了大量的资料,对Java有了更加全面的认识,对于软件工程这些辅助性的教材也巩固了不少,也为我这次的毕业设计提供了很大的帮助,同时锻炼并且增强了我这方面的能力。 22 仰恩大学毕业设计(论文) 参 考 文 献 [1] 张思民.JAVA开发技术与工程实践[M].北京:清华大学出版社,2010. [2] 耿祥义.JAVA2实用教程[M].北京:机械工业出版社,2006. [3] 汤一平.JAVA语言程序设计[M].北京:科学出版社,2006. [4] 张思民.JAVA程序设计实践教程[M].北京:清华大学出版社,2006. [5] 王薇.JAVA程序设计习题精编[M].北京:清华大学出版社,2011. [6] 朱仲杰.JAVA2全方位学习[M].北京:机械工业出版社,2006. [7] 毕广吉.JAVA程序设计实例教程[M].北京:冶金工业出版社,2007. [8] 刘腾红,孙细明.信息系统分析与设计[M].北京:科学出版社,2003. [9] Sharon Zakhour.JAVA教程[M].北京:人民邮电出版社,2007. [10] 王保罗.JAVA面向对象程序设计[M].北京:清华大学出版社,2003. 23 仰恩大学毕业设计(论文) 致 谢 在编写与实现本次毕业设计的过程中,我十分感谢同学们与老师给予我的关心和指导。因为我自身的基础相对较弱,许多的相关内容和知识都不是十分了解,多亏有同学们与老师的帮助与指导,我才能如此迅速地完成本次毕业设计,在此,我再次向帮助过我的同学们与老师表示真诚的感谢~多谢学校给我提供了舒适的工作、学习环境,使得开发过程得以顺利地进行~老师认真负责的工作态度、严谨的治学风格,使我深受启发;期间,与同学们之间的相互探讨也使我获益匪浅。毕业设计期间,我在学会用JAVA语言开发游戏之外,更重要的是学到了坚持不懈,奋发向上的精神,这种精神将会成为我今后人生前进道路上的一种动力。 24
本文档为【基于java的推箱子游戏】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_601191
暂无简介~
格式:doc
大小:153KB
软件:Word
页数:35
分类:互联网
上传时间:2017-09-01
浏览量:40