




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南涉外经济学院课程设计报告课程名称程序设计实训报告题目连连看游戏的开发学生姓名所在学院专业班级学生学号指导教师2013年6月20日课程设计任务书报告题目连连看游戏的开发完成时间20136学生姓名专业班级职称讲师总体设计要求和技术要点设计一个连连看游戏程序,游戏程序的功能需求如下游戏区是一个包含了多种不同花色游戏牌的二维棋盘,棋盘的行数和列数可以自行定义。每一种花色的游戏牌的数量都是偶数。两张花色相同的游戏牌的之间的路径如果满足以下条件,这两张游戏牌即可消去路径连线由不多于3条的水平和垂直的线段构成,任何一条线段都不能穿越其他的游戏牌,但可以不在棋盘中,路径两端的游戏牌必须具有相同的花色。游戏只要用鼠标即可进行操作。最初棋盘里布满了游戏牌,游戏开始时进行计时。第一次使用鼠标点击棋盘中的游戏牌,该游戏牌此时为“被选中”,以特殊方式显示;再次以鼠标点击其他游戏牌,若该游戏牌与被选中的游戏牌两者花色相同,且把第一张游戏牌到第二张游戏牌连起来,中间的线段不超过3条,则消掉这一对游戏牌,否则第一张游戏牌恢复成未被选中状态,而第二张游戏牌变成被选中状态。每消去一对游戏牌,应检查棋盘内是否至少还存在一对能消去的游戏牌,如果不存在,则在原有位置对游戏牌进行重排,直到至少存在一对能够消去的游戏牌。如果在指定的时间内消去了所有的游戏牌,游戏胜利;如果时间耗尽还未能消除全部的游戏牌,游戏失败。要求每人独立完成,使用主流开发工具,尽可能采用面向对象方法,在设计判断两张相同花色游戏牌能否消去的算法时,尽可能使用状态空间搜索算法(如回溯法、分支限界法等),要求代码的具有一定的可读性、可维护性和可扩充性。可以参考教师给定的程序或者其他程序,但程序和报告严禁全盘抄袭。工作内容及时间进度安排第11周第12周对需要开发的软件进行需求分析和软件设计第13周论证方案设计第14周第16周程序设计第17周测试、修改程序,撰写报告第18周验收答辩课程设计成果1与设计内容对应的软件程序2课程设计总结报告摘要近年来,JAVA作为一种新的编程语言,以其可移植性和平台无关性等优点,得到了广泛地应用,特别是JAVA与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。本设计报告阐述了连连看游戏的分析与设计的全过程,并在论文中相应的位置插入了图片、流程图以及一些具有技巧性的程序代码,更加清晰的描述了该游戏是如何实现的。连连看游戏有编写简单容易上手等特点,非常适合人们在完成工作的时候适当的娱乐要求。这些小游戏大都是以益智和娱乐为目的,不仅给紧张工作的人们以放松,还可以让人们的大脑得到开发。连连看游戏采用JAVA语言开发,以MYECLIPSE为开发平台。游戏主界面是基于SWING(图形用户界面)的开发,使得游戏界面简单清晰。并调用了其中的一些函数,完成了事件的触发功能。希望通过这次开发设计出的连连看小游戏,给大家的生活带来一点乐趣。游戏通过定义动态的二维数组,根据一定的算法实现规定的路径判断。关键词连连看游戏算法设计路径判断JAVA目录课程设计任务书II摘要III一、绪论1二、可行性分析221技术可行性222经济可行性223操作可行性3三、课程设计题目任务描述和要求431任务描述4311界面4312程序432设计要求及目的5四、需求分析641方案选择642功能描述643功能需求644功能模块及思路745系统需求分析总结9五、设计方案1151总体设计1152详细设计12六、实现1461游戏界面1462游戏各功能及代码15七、总结21八、参考资料22一、绪论计算机产业的进步与发展也促进了游戏产业的进步。当前我们生活中的各类游戏层出不穷,但是经典总会存在,有一些游戏不是时间的推移或是技术的革新可以洗刷掉它的存在和光环的。其中连连看游戏就是计算机游戏世界里典型的经典游之一。电子游戏产业作为现代计算机技术的产物,正在以其独特的魅力在全世界的娱乐领域占据主流位置。我们必须明确的一点就是游戏本身所具有的强大的吸引力。游戏其吸引力主要在于,它在让玩家打发时间的同时,也可以让人发泄对现实生活中的不满,得到在现实中不能得到的东西。而且游戏产业促动高科技技术不断升级,作为经济增长的一大支撑点,已经成为经济腾飞的“第四产业”。游戏产业的多样性发展趋势促使一门使程序设计更加方便、功能更加强大的开发语言发展起来。连连看游戏的设计主要采用的JAVA编程技术,就语言技术、风格、严谨等特点上来说,JAVA是编程语言中最为优秀的一种语言之一,甚至由它而引发出计算机语言界中的多种新的规范和特征。特别的,在连连看游戏的设计中需要将一些小图片贴入到游戏界面上,如果利用C或C来设计这部分是比较复杂的,但是使用JAVA语言只需将图片SET到BUTTON控件的背景图片即可,并将图片直接导入到控件中便可省去很部分的代码。所以,JAVA的产生和发展使得程序设计的功能更加的强大、设计的方法更加的便捷。二、可行性分析21技术可行性此次编写的连连看游戏是建立在MYECLIPSE85开发环境下,JAVA中SWING为连连看游戏的设计提供了便利,此次设计主要是运用的JAVA语言编程与实现的。在此开发环境中是完全可行的。连连看游戏是涉及到图形界面处理的,其中图片的导入可以通过开发软件的图片导入控件直接导入,但是相应的操作需要对界面进行重绘,图11是界面控制处理的流程图图21图形界面控制22经济可行性一个游戏的实现,需要考虑玩家花费的人力物力,不计算能够回收多少资金就不是一个好的项目负责人。一个新想法如果不经过项目负责人的决策是不开始BUTTON随机生成图片界面BUTTON布局选中相同的两张图片不符合规则重新选择隐藏BUTTON图片消除完毕结束YNYN可能立项的。所以,在进行游戏设计的过程中,一定要把项目的规模和市场效果考虑进去,否则游戏再好,如果不适合市场的需要也是徒劳。通过花费、时间和人力的综合考虑,连连看游戏的设计只需要一台装有开发软件JAVA的计算机和一个具有相关知识的开发者,是有经济可行性的。23操作可行性从技术上来考虑,这是可以实现的。需要你熟悉C与ASPNET以及SQLSERVER2008并能够简单的应用,那样留言簿就能够实现了。但对于用户来说他要的仅仅是能够与大家交流,分享心情的平台。他并不会在乎你用什么技术去实现以及你花费多少精力去完成的。因此在操作上必须简单,这是完全能够去实现的。因此在操作上是完全可行的。此次课程设计的连连看游戏是基于MYECLIPSE85之上的,只要你的电脑安装了此软件就可以玩连连看游戏了三、课程设计题目任务描述和要求31任务描述311界面用JAVASWING的JFRAME设计界面,使用JFRAME继承。(1)其主体实现如下PUBLICCLASSTESTLLK01EXTENDSJFRAME设置游戏界面的大小以及布局THISSETSIZE1200,800/将窗体的大小设定THISSETDEFAULTCLOSEOPERATIONJFRAMEEXIT_ON_CLOSETHISSETRESIZABLEFALSE/窗体不能改变大小THISSETTITLE“连连看“/设置标题其界面如下(图311)图311312程序游戏过程,如果玩家在规定的时间内消完则提示玩家胜利,如果在一定时间内图片没有消完则提示玩家时间到,游戏失败。经过对游戏的初步分析,连连看游戏包含了如下规则1、条件程序的关键在于判断用户连续点击的两个图案能否消除。两个图片可以消除的条件有两个图片相同图片间连线的转角数不得超过2。2、操作第一次使用鼠标点击游戏界面中的牌,该牌此时为“被选中“,以特殊方式显示;再次以鼠标点击其他牌,若该牌与被选中的牌图案相同,且把第一个牌到第二个牌连起来,中间的直线不超过3根,则消掉这一对牌,否则第一个牌恢复成未被选中状态,而第二个牌变成被选中状态。在规定的时间内将游戏界面上的牌全部消除掉。则游戏胜利,在规定时间,界面上的牌仍未全部消掉。则游戏失败32设计要求及目的通过本次课程设计,并在实际运用中学习和熟悉JAVA程序开发的基础过程,进一步熟悉掌握JAVA程序设计语言的基础内容、基本技能和方法,同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。1主要是能通过开发“连连看”这个小游戏,提高自己JAVA程序设计编程的实际能力。2进一步熟悉掌握JAVA程序设计的基础内容,JAVA多线程编程等。3大体了解怎样用JAVA来编写小游戏,增强我们实践能力和创新精神的综合培养。4设计过程中,对整个游戏所实现的功能进行详细的设计以及对存在的问题及解决办法进行最终确定;而后完成游戏的程序编写,并优化;最后,写出设计本游戏的详细文档说明,并作课程设计汇报。四、需求分析41方案选择在概要设计阶段,主要有两中方案可供选择一、所有的图片都是按约定好的种类数和在同一区域的重复次数随机出现,并且每张图片的的出现次数为偶数,时间会有限制,每一关的图片数量或种方案的设计思想,时间是不同的,这样就增加了游戏的难度。二、在同一区域中,图片出现的种类数和重复次数是可以由玩家选择的,时间由游戏约定。不过玩家选择的种类数和重复次数必须是偶数才可以顺利完成游戏,否则游戏虽然可以正常运行,但无法完成游戏。在第一种方案中,由于出现的图像按种类数和重复次数都由软件约定,这样就缺乏玩家自主选择的空间,只是在玩系统已经是设定好的游戏,不能改变什么,这样就在无意中降低了玩家在游戏的过程中乐趣,最后致使玩家放弃继续玩下去。我们参考了网络上的连连看游戏,考虑到游戏的娱乐性。所以我们放弃第一种方案的设计思想,参考网络上流行的连连看的游戏,设计出第二种方案。42功能描述本设计采用单机模式,当在规定的时间内消完全部的图片则当前关卡通过,如果在规定的时间内没能消完所有的图片则游戏结束,重新开始新游戏。游戏规则是模仿普通的连连看游戏,主要是鼠标两次点击的图片能否消去的问题。当前,前提是点击两张相同的图片,若点击的是同一张图片或者两张不同的图片,则不予处理。在两张想同图片用三根以内的直线能连在一起,就可以消去;否则,不予处理。游戏过程,如果玩家在一定的时间内消完则提示玩家胜利;如果在一定时间内图片没有消完则提示玩家时间到。43功能需求1、设计游戏界面2、游戏基本功能3、在游戏无解决方案时重排4、44功能模块及思路441解决游戏区域问题这个问题最简单,但是却是最花时间的。正所谓万事开头难。刚开始想了好多控件来实现。比如LABEL,PANEL,BUTTON等等,2后来在参考文献中发现一个扫雷游戏可以通过IMAGE控件来画图。因此在几天之后才解决这个最早的最简单的也是最头疼的问题。442获取图片位置的思路首先,最基本的就是用BUTTON代替图片进行布局了,然后将图片SET到BUTTON用来做背景图片。这里采用最简单的方法数组。考虑到图片是多行多列的格式。所以采用二维数组(数组名为GAME_GRID方式来控制比较直观,并且为了程序容易解读,统一在不同过程中用名为I和J的变量来分别表示行列。程序开始时给数组中的各个元素赋初值为0,即表示没有图片。然后数组控制整个游戏区域,游戏区域最外围为空白区域,即相关元素的值为0。这样就可以保证游戏刚开始后,第二层显示的图片之间的相连路径处理时就没有阻碍了。这个游戏考虑到玩家对图片的爱好不同,故可以自由修改。将数组GAME_GRID的数据与图片名匹配(如GAME_GRID的数据为125则图片名为1,225与之一一对应),玩家则只需要将自己喜欢的图片改变图片名字去替换就可以了。其BUTTON背景图片的方法是用IMAGEICON来存储图片信息然后SET到BUTTON中。这个思路的具体算法可以后面的322的第二个步骤中得以体现。443分类判断法这里实质上是一种递归的思想,要判断图片A与图片B能否通过一条有N个转角的路径相连,可以转化为判断能否找到图片C,C与A能直线相连,且C与B能用一条有N1个转角的路径相连。若这样的图片C存在,那么A与B就可以通过一条有N个转角的路径相连。根据转角数不得超过2个的规则,我们可以分为转角数分别为0个、1个、2个这三种情况分别讨论。3(1)0转角连通(直线连通)两个图片的纵坐标或横坐标相等,且两者连线间没有其他图案阻隔。(2)一个转角连通其实相当于两个图片的横向与纵向的直线相交只有一个焦点。图442一个转角连通(3)两个转角连通判断图片A与图片B能否经过有两个转角的路径连通实质上可以转化为判断能否找到一个点C,这个C点与A可以直线连通,且C与B可以通过有两个转角的路径连通。若能找到这样一个C点,那么A与B就可以经过有两个转角的路径连通。判断是否经两个转角连通的算法需要做两个方向上的扫描水平扫描和垂直扫描。水平判断。如下图所示,为了判断A,B能否通过2个转角连通,则从A开始在水平方向上向左右扫描,并判断经过的点能否与B点经过1个转角连通。显然C点能与B点经1个转角连通,故A,B能经2个转角连通。图443两个转角连通的判断垂直判断。如下图所示,为了判断A,B能否通过2个转角连通,则从A开始在垂直方向上下扫描,并判断经过的点能否与B点经过1个转角连通。显然C点能与B点经1个转角连通,故A,B能经2个转角连通。图444两个转角连通的判断45系统需求分析总结通过对现行连连看系统的调查与分析,本系统的结构基本合理,系统功能基本能够达到WINDOWS小游戏的要求。本系统的输入边界是用户进行鼠标事件操作,图片全部消除,游戏结束,并且游戏胜利4。通过对连连看游戏规则以及相关算法的分析,本系统总的数据量较小,规模不大,适合于在普通微机或小型机上运行。五、设计方案51总体设计本设计采用单机模式,当在规定的时间内消完全部的图片则当前关卡通过,如果在规定的时间内没能消完所有的图片则游戏结束,重新开始新游戏。游戏规则是模仿普通的连连看游戏,主要是鼠标两次点击的图片能否消去的问题。当前,前提是点击两张相同的图片,若点击的是同一张图片或者两张不同的图片,则不予处理。在两张想同图片用三根以内的直线能连在一起,就可以消去;否则,不予处理。连连看游戏其结构图如下图51游戏结构图开始结束胜利失败网格划分图片导入连连看游戏界面操作客户区游戏区菜单响应图片响应52详细设计521游戏界面设计游戏界面的设计对于编程人员来说,可能算是最简单的问题,但是,对于大多数玩家来说,他可能不会关心你是怎么实现的,玩家一开始选择玩这个游戏,他可能更加关心的界面是否美观,是不是能让他有耳目一新的感觉。在本次课程设计中,主要用JAVA中SWING界面编程来实现5。522鼠标点击控制鼠标点击控制主要表现在游戏的功能控制上,外部的鼠标、键盘对游戏操作的相应,连连看游戏主要是鼠标点击对游戏操作的作用,例如鼠标单击开始、结束选项对游戏的控制6。鼠标点击退出选项退出游戏,程序中由系统触发了PUBLICVOIDACTIONPERFORMEDACTIONEVENTE鼠标响应,添加系统内置代码SYSTEMEXIT0,点击触发,退出游戏。鼠标点击选择游戏区的图片响应则交予JAVA系统自动响应FORINTROW_I0ROW_I0图片消完失败进入下一关结束图524游戏过程流程图六、实现61游戏界面1、游戏初始界面如下图61所示游戏界面设计比较简洁,用SWING的JFRAME,以及一个BUTTON控件。其已经消除的图片将BUTTON隐藏。具体界面如图61所示图61基本界面图其部分实现代码如下THISSETSIZE1200,800/将窗体的大小设定THISSETDEFAULTCLOSEOPERATIONJFRAMEEXIT_ON_CLOSE/退出游戏时关掉进程THISSETRESIZABLEFALSE/窗体不能改变大小THISSETTITLE“连连看“/设置标题/头部容器INIT/JPANELTOOLBARNEWJPANELBORDERBORDERBORDERFACTORYCREATEBEVELBORDERBEVELBORDERLOWERED,COLORBLUE,COLORYELLOW,COLORBLUE,COLORYELLOWTOOLBARADDBUTTONBUTTONADDACTIONLISTENERTHISTOOLBARSETBORDERBORDERTOOLBARSETPREFERREDSIZENEWDIMENSION1200,50/用户选择区INIT/JPANELACTIONPANELNEWJPANEL/新建JPANEL型的控件ACTIONPANELSETBORDERBORDERACTIONPANELSETPREFERREDSIZENEWDIMENSION300,740/设置大小/游戏区INIT/JPANELCONTENTPANELNEWJPANELGRIDLAYOUTGRIDLAYOUTNEWGRIDLAYOUTROW,COLUMNCONTENTPANELSETBORDERBORDERCONTENTPANELSETPREFERREDSIZENEWDIMENSION900,740CONTENTPANELSETLAYOUTGRIDLAYOUT/将游戏区CONTENTPANEL布局改为GRIDLAYOUT布局THISGETCONTENTPANEADDTOOLBAR,BORDERLAYOUTNORTHTHISGETCONTENTPANEADDACTIONPANEL,BORDERLAYOUTEASTTHISGETCONTENTPANEADDCONTENTPANEL,BORDERLAYOUTCENTER游戏完成界面如图62所示图62完成界面62游戏各功能及代码1、游戏界面初始化PUBLICCLASSLLKANTESTIMPLEMENTSACTIONLISTENERJFRAMEMAINFRAME/主面板JBUTTONFIRSTBUTTON,SECONDBUTTON/第一二次选择BUTTONCONTAINERTHISCONTAINERJPANELCENTERPANEL,EASTPANEL,NORTHPANEL/子面板PUBLICSTATICINTROW8,COLUMN8JBUTTONGAME_ALLNEWJBUTTONROWCOLUMN/游戏实际按钮数组JBUTTONEXITBUTTON,RESETBUTTON,NEWLYBUTTON/退出,重列,重新开始按钮INTGAME_GRIDNEWINT1010STATICBOOLEANFLAGFALSE/判断是否有按钮被选中INTROW10,COLUMN10,ROW20,COLUMN20INTFRISTMSG0,SECONDMSG0,VALIDATELV/游戏按钮的位置坐标INTI,J,K,NSTRINGSTR“SRC/IMAGES/“,STR1“JPG“IMAGEICONICONPUBLICVOIDINITBORDERBORDERBORDERFACTORYCREATEBEVELBORDERBEVELBORDERLOWERED,COLORBLUE,COLORYELLOW,COLORBLUE,COLORYELLOWMAINFRAMENEWJFRAME“无聊连连看“THISCONTAINERMAINFRAMEGETCONTENTPANE/得到内存中窗体内容THISCONTAINERSETLAYOUTNEWBORDERLAYOUT/实现窗体CENTERPANELNEWJPANELEASTPANELNEWJPANELNORTHPANELNEWJPANELTHISCONTAINERADDCENTERPANEL,“CENTER“EASTPANELSETBORDERBORDERTHISCONTAINERADDEASTPANEL,“EAST“THISCONTAINERADDNORTHPANEL,“NORTH“CENTERPANELSETLAYOUTNEWGRIDLAYOUTROW,ROW/画BUTTON/FORROW10ROW115GAME_GRIDROW11COLUMN110GAME_ALLROW1COLUMN1NEWJBUTTONGAME_ALLROW1COLUMN1SETBORDERBORDERCENTERPANELADDGAME_ALLROW1COLUMN1GAME_ALLROW1COLUMN1SETVISIBLEFALSEELSEICONNEWIMAGEICONSTRGAME_GRIDROW11COLUMN11STR1GAME_ALLROW1COLUMN1NEWJBUTTONNULL,ICONGAME_ALLROW1COLUMN1SETBORDERBORDERGAME_ALLROW1COLUMN1ADDACTIONLISTENERTHIS/添加响应事件CENTERPANELADDGAME_ALLROW1COLUMN1NEWLYBUTTONNEWJBUTTON“重玩“NEWLYBUTTONADDACTIONLISTENERTHISRESETBUTTONNEWJBUTTON“重列“RESETBUTTONADDACTIONLISTENERTHISEXITBUTTONNEWJBUTTON“退出“EXITBUTTONADDACTIONLISTENERTHISEASTPANELADDEXITBUTTONEASTPANELADDRESETBUTTONEASTPANELADDNEWLYBUTTONMAINFRAMESETBOUNDS300,100,850,500MAINFRAMESETVISIBLETRUEMAINFRAMESETDEFAULTCLOSEOPERATIONJFRAMEEXIT_ON_CLOSE/退出后关闭程序2、游戏随机布局/随机布局/PUBLICVOIDRANDOMBUILDINTRANDOMS,COL01,ROW01FORINTII1IIJ/第二个按钮在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 染发考试题及答案
- 古汉考试题及答案
- 护理核心制度及安全试题与答案
- 护理人员岗位职责试题(含答案)
- 中西医结合外科学(广州中医药大学)知到智慧树答案
- 黑龙江高级机修木工理论模拟试题(附答案)
- 2025二手设备买卖协议书附二手设备残值回收条款
- 2025地产劳务合作劳务派遣服务合同
- 2025出租屋承包合同协议书-旅游度假区出租屋经营合同
- 盾构噪音控制方法-洞察及研究
- 北师大版(2024新版)七年级上册数学第一章《丰富的图形世界》大单元整体教学设计
- 2025届高考语文一轮总复习:120个文言实词
- 恶性肿瘤微量营养素缺乏与补充
- QB∕T 8045-2024 聚对苯二甲酸乙二醇酯(PET)结构泡沫板材
- 初中英语校本教材
- 2024年内蒙古丰镇市招聘社区工作者26人历年重点基础提升难、易点模拟试题(共500题)附带答案详解
- 生态环境执法大练兵知识考试题库(含答案)
- “案”说刑法(山东联盟)-知到答案、智慧树答案
- 课件:性传播疾病讲解
- 新能源汽车行业的营销渠道与渠道管理
- 2024年度国网基建安全(变电土建)安全准入备考试题库(附答案)
评论
0/150
提交评论