java实现推箱子游戏学士学位论文.docx

上传人:b****5 文档编号:29178203 上传时间:2023-07-21 格式:DOCX 页数:57 大小:1.67MB
下载 相关 举报
java实现推箱子游戏学士学位论文.docx_第1页
第1页 / 共57页
java实现推箱子游戏学士学位论文.docx_第2页
第2页 / 共57页
java实现推箱子游戏学士学位论文.docx_第3页
第3页 / 共57页
java实现推箱子游戏学士学位论文.docx_第4页
第4页 / 共57页
java实现推箱子游戏学士学位论文.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

java实现推箱子游戏学士学位论文.docx

《java实现推箱子游戏学士学位论文.docx》由会员分享,可在线阅读,更多相关《java实现推箱子游戏学士学位论文.docx(57页珍藏版)》请在冰豆网上搜索。

java实现推箱子游戏学士学位论文.docx

java实现推箱子游戏学士学位论文

Java实现推箱子游戏

摘要

社会在进步,人们生活质量也在日益提高。

高强度的压力也接踵而来。

社会中急需出现新的有效方式来缓解人们的压力。

此次设计符合了社会需求,java推箱子游戏可以让人们在闲暇之余,体验游戏的乐趣。

具有操作简单,易于上手的特点。

推箱子游戏的玩法十分简单——控制人物绕过障碍物,到达目的地。

此次试验基于java语言。

将游戏地图做成通用的关卡设计,关卡用文本实现在文本文件里设置好关卡,游戏核心模块中图片随机生成采用了数字和图片绑定,运用随机函数以及数组交换的算法,实现了游戏图片初始化状态,有效的解决了图片排布问题,方案简单易行。

充分运用堆栈的存储特点实现悔棋功能。

用迭代计算小人和箱子的移动,一个计算人是否能到达某一个格子一个是计算箱子是否能到达相邻的某一个格子。

舒缓的音乐配合有趣的步骤,相信能引起很多人的兴趣。

作为一个具有悠久历史的游戏,也能够引起人的怀念和共鸣。

关键词压力;游戏;java;多功能

JavaimplementationoftheSokobangame

Abstract

Socialprogress,qualityoflifeisalsoincreasing.High-intensitypressurealsofollow.Theemergenceofnewsocialurgentlyneededaneffectivewaytorelievepeople'sstress.Thisisdesignedtomeettheneedsofthecommunity,javaSokobangameallowspeopleinhersparetime,experiencethefunofthegame.Withsimpleoperation,easytousefeatures.

Sokobangameplayisverysimple-controlthecharacteraroundobstaclestoreachthedestination.Thetestisbasedonjavalanguage.Thegamemapmadegenericleveldesign,checkpointssetupcheckpointstoachievewithatextinatextfile,thegamecoremoduleusesarandomlygenerateddigitalimagesandpicturesbinding,usingarandomarrayoffunctionsandalgorithmsexchangetoachieveagamepicturesinitializationstate,effectivelysolvetheproblemofpicturearrangement,theprogramissimple.Makefulluseofthestoragecharacteristicsofthestacktoachieveundofunction.Mobilecomputingandboxesofiterativevillain,acalculationwhetheronecanreachacertaingridistocalculatewhetheracasecanreachaneighboringlattice.Soothingmusicwithinterestingstep,whichwillhopefullyleadtoalotofpeople'sinterest.Asagamewithalonghistory,butalsocancausepeopletomissandresonance.

KeyWordsPressure;games;java;multifunction

目录

摘要i

Abstractii

引言1

1系统分析2

1.1技术可行性分析2

1.1.1可行性目的2

1.1.2可行性研究前提2

1.1.3算法可行性分析2

1.1.4平台选择4

1.2需求分析8

1.2.1引言8

1.2.2游戏需求8

1.2.3软硬件需求9

1.2.4接口控制9

1.3方案论证9

1.3.1C++语言的优点9

1.3.2Java语言的优点10

1.3.3C语言的优点11

1.3.4方案选择13

2概要设计15

2.1游戏设计分析15

2.1.1地图文件的引用15

2.1.2程序运逻辑15

2.1.3绘图15

2.1.4显示平台15

2.2注意事项15

2.3游戏流程图16

2.4函数模型16

3详细设计20

3.1游戏总体结构与代码20

3.2选关模块21

3.3地图的绘制形成22

3.4小人与箱子移动的算法24

3.5小人上下移动模块26

3.6悔棋模块27

3.7音乐控制28

4游戏测试30

4.1软件测试30

4.1.1软件测试简介30

4.1.2测试方法30

4.1.3测试步骤31

4.2游戏系统性能分析31

结论32

参考文献33

致谢34

原文35

翻译42

引言

策略性游戏可以锻炼人的思维能力还能缓解人的压力,使人们暂时忘却生活当中的烦恼,增强人们的逻辑思维能力,游戏的艺术美也吸引着越来越多的玩家和厂商,寓教于乐,在放松人们心情的同时还可以活跃双手,在节奏越来越快的生活中,游戏如清风般扑来,丰富了人们的生活,随着时代的进步,游戏产业逐渐壮大,成为人们生活中不可或缺的一部分。

推箱子游戏起源于日本,在游戏中人们可以提高逻辑思维能力。

它的玩法也非常简单。

控制人物不停的移动将箱子推到目的位置。

难点在于移动的位置,以及箱子到达指定位置的顺序,只有多加思考才能获得游戏的胜利。

反复推敲,锻炼了人们的耐性。

本次的开发尽量多的设置了关卡数目,增强游戏的耐玩性,同时在画面上有所提高,借鉴了许多达人的经验和技术,引发了我对游戏的热爱,丰富了个人生活,相信推箱子游戏在今后的社会总会越来越引人注目。

 

1系统分析

1.1技术可行性分析

1.1.1可行性目的

通过推箱子游戏中使用的java技术,让我能够更加熟练的使用myeclipe。

同时了解相关运行环境的配置。

将理论知识和实际操作结合起来。

达到学以致用的目的。

网上资料的查询极大的提高了我的自学能力。

希望经过此次设计,锻炼自己的思考,解决问题的能力。

对系统开发的流程有更深层次的理解,检验学习成果和实际动手能力,对底层知识有更深的了解。

为今后的工作打好基础。

1.1.2可行性研究前提

基本需求:

通过规范的开发流程,采用面向对象的分析设计方法实现游戏美观,易玩,及时等特性。

操作性方面主要通过键盘的借口实现,操作键位是上,下,左,右。

主要开发目标:

通过此次研究熟练java的相关知识和技术的应用,界面美化的工作需要同学的的帮助,了解团队和合作的重要,熟悉不同领域相关技术的交叉,完成java推箱子游戏的基本功能。

条件假定和限制:

java相关技术的使用不是很熟练,如果有些游戏bug没有及时发现,相关升级版本需要之后弥补,更正。

可行性研究所采用的方法和步骤:

通过研究分析推箱子小游戏所需要的功能以及实现的方法、确定主体结构。

利用所学到的知识,以最简洁、最容易的办法,边开发边测试边修改,实现一个初级游戏软件。

评价尺度:

实现基础的推箱子功能,如输赢判定,人物的移动位置,箱子的移动位置,同时加强画面的优化,音乐的选定等基础功能。

更强的优化需要以后的升级和修改,实相关功能就达到目标。

1.1.3算法可行性分析

管理可行性:

此次设计基于java,有面向对象,可移植性,安全性,并发机制,支持可视化图形界面等特点。

易于管理。

经济可行性:

本次设计注重游戏功能的实现,达到设计目的,不用于其他的商业用途。

通过此次设计增强java技术和实践的结合。

同时了解可视化界面,设计操作界面和页面的跳转更换。

操作环境需要MyEclipse。

相关资料可以上网查询。

硬件方面可以使用HP笔记本。

所以易于操作。

技术可行性:

对于本游戏,可以使用如VB,Java,Delphi等相关的编程语言,但是考虑到编写程序的难易程度以及对编译语言的了解程度,本游戏选择JAVA程序语言作为编程语言。

需要对变量定义、变量初始化、界面初始化、游戏初始化等,然后就可以进入游戏,处理游戏过程中的各种操作。

社会可行性:

本次设计基于学习的需要,所做毕业设计的内容不会在社会上进行商业运作。

网上所查的资料以及相关的知识的引用,属于学术交流,不涉及版权,以及法律责任。

同时不会对社会产生负面的影响,不存在不可行性。

现建立一个二维常数队列(a0,b0),将所有位置对应于二维队列中的一个位置。

将石头的位置上设定数字2,箱子的位置上设定数字1,空地的位置上设定数字0,将任务初始的位置上设定数字3。

这样就完成了初始化的过程。

将人物可以直接到达的箱子周围的空地算出来(个人认为这一步深度优先比较好),存入另一个数列中。

将人物和箱子的当前位置记入变量i,j中,人物移动到每个位置上后,人物与箱子的位置差绝对值一定为1。

用这个差值算出如果箱子可以移动时的下一位置的当前状态,当状态不为0时,舍弃这个位置,即此路不通,这路算法结束;若状态为0,则将箱子的位置和人物位置全部移动到下一位置,这个时候将箱子位置和人物位置记入新的二维常数队列(a1,b1)中。

这时再用上一个判断加上这个判断:

当变量i,j与二维常数队列(a1,b1)中记录的对应位置一致时认定该路不通,这样用深度优先循环下去。

直到得到最终的位置m,n。

当然这是一个箱子的算法,要是是两个箱子就将常数列用(a0,b0,c0)代替,然后将第二个箱子的位置写在c0中就可以了。

这实际上是一个寻路问题,最简单的用一个广度优先搜索就可以找到最短路径。

从角色当前位置开始,每次向所有可能方向展开一层,如下图直到扩展到目标位置。

根据节点的父子关系能反推出移动步骤。

如下图1-1所示:

图1-1推箱子地图演示

输出结果很简单,从当前栈底到栈顶,每个元素代表一步移动。

由于移动步骤只记录了主角推动箱子的位置,可以根据上一个问题的解决办法,能得到当前主角位置到主角推动位置的路径。

要判断当前局面是否在之前的移动步骤上出现过,这个问题到现在我还没有想出特别好的方法。

容易想到最笨的方法的是从上到下访问当前栈内所有元素,恢复出之前的所有状态逐一比较,包括主角是否在同一封闭空间。

聪明一点的话可以根据关卡状态计算出某种唯一的特征值记录在压栈数据中,只要比较该特征值就可以了。

仍然使用问题1的广度优先扩展,容易找出所有和主角所在空间相邻的箱子,判断箱子是否可以从主角所在空间推动也不难,先看是哪一面相邻,再看箱子另一面是否为空。

1.1.4平台选择

一、首先我们需要做到MyEclipse到底是什么?

下面允许我做一些简要的介绍:

应该大家都知道Eclipse优点:

免费、程序代码排版功能、有中文化包、可增设许多功能强大的外挂、支持多种操作系统(Windows、Linux、Solaris、MacOSX)..等等,而MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。

它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。

  在结构上,MyEclipse的特征可以被分为7类:

1.J2EE模型。

2.WEB开发工具。

3.EJB开发工具。

4.应用程序服务器的连接器。

5.J2EE项目部署服务。

6.数据库服务。

7.MyEclipse整合帮助。

  对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。

MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。

简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。

二、接着既然我们已经知道了这个软件,那么她又可以帮我们作些什么呢?

这里我作一些简要的介绍(由于myeclipse相继推出不同的版本,每个版本又有其各自的特点,在此我只介绍我当前在用的整个版本6.XGA)

总结起来讲这个版本支持这些以下功能:

1.平台和安装支持

 

(1)兼容Eclipse3.3/Europa1.0。

 

(2)支持Java5&Java6。

 (3)可运行在Windows(XP,Vista)、Linux、Mac操作系统。

2.改进了JavaEE5和Spring功能部件。

 

(1)提高EJB3.0工程项目的灵活度,从数据库模式直接产生bean,你可以结合sybase开发工具PowerDesigner来生成相应当实体bean,这样给我们带来了不少便利之处!

(只是要提醒的是她生成的实体bean的对OR映射功能的支持很差,需要我们手动去做一些修改)。

(2)支持Java持久化结构开发。

(3)对Spring2.0升级,增强配置管理功能。

升级Hibernate,这些对开发企业级的应用是多么大的一个佳音啊

(4)Spring-JPA高度集成。

3.支持AJAX开发和测试,这门技术是近几年大家一致看好的技术,而该软件给她提供了支持,给开发人员带来了不少便利之处。

(1)支持美国Apple公司—所有的AJAX特征能在Mac操作系统上运行。

(2)改进了AJAXWeb浏览器。

(3)改进了AJAX工具。

(4)增强了JavaScript调试,这点我的体会很深刻,该软件提供的调试机制,如果你充分用起来你会发现你的开发效率会大幅度的提高。

 4.支持RADWeb开发。

 5.具备Matisse4MyEclipse可视化Swing设计器。

快速JavaEE部署和测试,感触颇深,如果你的电脑性能不差,部署的速度非常快,与传统的方式比他的优势是如此的明显,相信只要你一用你就不想再想用传统的方式了,但有点不尽人如意的是只要你的代码修改了你就要重新部署你所打的软件包,比如当你在JBOSS服务器里部署EJB3.0运用的时候,如果你的一些Bean类变化或者修改,你就不得不要去重新部署,但是还是不影响你的效率的。

(1)项目自动部署和启动服务:

根据指定的调试和运行模式,自动配置项目和启动服务器;在配置前,自动停止运行的服务器;在现有的应用程序配置中可以重新配置。

(2)MyEclipseTomcat6服务器——就地集成,启动只要一秒钟。

(3)MyEclipseDerby服务器:

自动进行JDBC连接;可配置的启动选项。

上述仅仅是做了一些我在开发一些小项目的时候用到的一些功能,有兴趣的同学可以去到MyEclipse学习中心在那里可以找到帮助和学习资料.包括:

1)包含JavaEE项目源代码.2)一键安装MyEclipseJavaEE示例项目。

三、1.常用的MyEclipse快捷键(方便快捷)。

(1)Ctrl+M切换窗口的大小。

(2)Ctrl+Q跳到最后一次的编辑处。

(3)F2当鼠标放在一个标记处出现Tooltip时候按F2则把鼠标移开时Tooltip还会显示即ShowTooltipDescription。

F3跳到声明或定义的地方。

F5单步调试进入函数内部。

F6单步调试不进入函数内部,如果装了金山词霸2006则要把“取词开关”的快捷键改成其他的。

F7由函数内部返回到调用处。

F8一直执行到下一个断点。

(4)Ctrl+Pg~对于XML文件是切换代码和图示窗口。

(5)Ctrl+Alt+I看Java文件中变量的相关信息。

(6)Ctrl+PgUp对于代码窗口是打开“ShowList”下拉框,在此下拉框里显示有最近曾打开的文件。

(7)Ctrl+Shift+/加上段注释。

Ctrl+Shift+\取消段注释。

Ctrl+/在代码窗口中是这种//~注释。

Ctrl+Shift+/在代码窗口中是这种注释,在JSP文件窗口中是

--~-->。

(8)Alt+Shift+O(或点击工具栏中的ToggleMarkOccurrences按钮)当点击某个标记时可使本页面中其他地方的此标记黄色凸显,并且窗口的右边框会出现白色的方块,点击此方块会跳到此标记处。

(9)右击窗口的左边框即加断点的地方选ShowLineNumbers可以加行号。

(10)Ctrl+I格式化激活的元素FormatActiveElements。

Ctrl+Shift+F格式化文件FormatDocument。

(11)Ctrl+S保存当前文件。

Ctrl+Shift+S保存所有未保存的文件。

(12)自动汇入所需要的类别:

Ctrl+Shift+MCtrl+Shift+O好象使用Ctrl+Shift+O也可以按newRemoteSite,Name填svn,URL填http:

//subclipse.tigris.org/update,一直next到finished为止。

(13)Ctrl+Space提示键入内容即ContentAssist,此时要将输入法中Chinese(Simplified)IME-Ime/NonlmeToggle的快捷键(用于切换英文和其他文字)改成其他的。

Ctrl+Shift+Space提示信息即ContextInformation。

(14)双击窗口的左边框可以加断点。

(15)Ctrl+D删除当前行。

(16)Ctrl+Shift+M(先把光标放在需导入包的类名上)作用是加Import语句。

Ctrl+Shift+O作用是缺少的Import语句被加入,多余的Import语句被删除。

(17)快速执行程序:

Ctrl+F11第一次执行时,它会询问您执行模式,设置好后,以后只要按这个热键,它就会快速执行。

2.用过eclipse的同学应该做到Eclipse本身很快的,但是加上了myeclipse后,就狂占内存,而且速度狂慢,那如何让Eclipse拖着myeclipse狂飚呢?

解决方法:

第一步:

取消自动validation----validation有一堆,什么xml、jsp、jsf、js等等,我们没有必要全部都去自动校验一下,只是需要的时候才会手工校验一下,速度立马提升好几个档次!

取消方法:

windows-->perferences-->myeclipse-->validation,除开Manual下面的复选框全部选中之外,其他全部不选。

手工验证方法:

在要验证的文件上,单击鼠标右键-->myeclipse-->runvalidation

第二步:

取消Eclipse拼写检查。

1.拼写检查会给我们带来不少的麻烦,我们的方法命名都会是单词的缩写,他也会提示有错,所以最好去掉,没有多大的用处。

windows–>perferences–>general–>validation->editors->Text。

Editors->spelling。

第三步:

取消myeclipse的启动项。

myeclipse会有很多的启动项,而其中很多我们都用不着,或者只用一两个,取消前面不用的就可以windows–>perferences–>general–>startupandshutdown。

第四步:

更改jsp默认打开的方式。

安装了myeclipse后,编辑jsp页面,会打开他的编辑页面,同时也有预览页面,速度很慢,不适合开发。

所以更改之。

windows–>perferences–>general–>editors->fileassociations。

第五步:

更改代码提示快捷键。

现在的代码提示快捷键,默认为ctrl+space,而我们输入法切换也是,所以会有冲突。

谁叫myeclipse是外国人做的呢。

根本不需要切换输入法。

windows–>perferences–>general–>Keys更改contentassist为alt+/同时由于alt+/已经被wordcompletion占用,所以得同时修改wordcompletion的快捷键值

--[if!

supportEmptyParas]-->

2.有时点击myeclipse里的struts的xml配置文件,会报错:

ErroropeningtheeditorUnabletoopentheeditor,unknowtheeditorid…..

把这个窗口关闭后才出正确的xml文件显示,这个我们这样改:

windows–>perferences–>general–>editors->fileassociations选择*.xml,选择myeclipsexmleditor点default,ok。

3.js中有alert("中文");可以ctrl+shift+f,但是这样以后只有运行才知道alert的是什么,而且js中如果有英文注释也还是保存不了,点击右键“properties”在textfileencoding中点oth-er选择GBK。

4.如果是myeclipse5以下的版本,有时会出现这样的问题:

在断点调试的时候没有绿色的条显示,断点走到另外一个文件的时候视图里也不自动跳转到那个页面,这样调试起来很麻烦,需要手动的点击跟到断点位置看变量的值!

解决办法:

在eclipseWindow--Preferences--Tomcat--SourcePath中左侧,中要跟踪的工程后Apply,ok。

然后重启Tomcat;这项在myeclipse6中是没有的,貌似myeclipse6中没出过这样的问题;今天又碰到一个问题,补充一下:

修改了一个文件,比如添加了一句打印:

System.out.println("11111111"),执行时发现不打印,把class反编译,发现这句确实已经添加上了,重启tomcat,这句没问题了,但是再做修改还是不生效,最终发现是在Window--Preferences--MyEclipse--InterNetTools--cache中取消了勾选disablecaching,重新勾选就好用了。

5.设定breakpoints查找代码中空指针是哪一行产生的,并调试:

在Debug视图中,选择Breakpoints在其下一行有AddJavaExceptionBreakpoint图标在Chooseanexception中输入NullPointerException即可,不用的时候我们可以把那个断点点掉不要删除。

1.2需求分析

1.2.1

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1