Java课程设计连连看游戏 程向东_第1页
Java课程设计连连看游戏 程向东_第2页
Java课程设计连连看游戏 程向东_第3页
Java课程设计连连看游戏 程向东_第4页
Java课程设计连连看游戏 程向东_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要当今社会,休闲型游戏越来越得到人们的喜爱,我所做的毕业设计实例“连连看游戏的设计与实现”是近几年来网络上非常流行的一种二维休闲游戏,它对电脑配置要求不高,娱乐性强,易于上手。此次设计所使用的语言为JaVa语言,开发环境为JCreatOr。主要应用到SWing组件,JaVa小程序,事件及接口等。这些接口为游戏的制作提供了便捷的条件,本系统的主要特点就是运用SWing组件和事件处理技术,进行界面的绘制,鼠标的操作,以及积分的显示等功能。这次通过连连看的设计开发将对理解Swing组件技术以及事件处理技术在游戏方面的应用起到很大的帮助作用,同时为掌握Java编程技术及二维休闲游戏设计的一般方法打下坚实的基础。关键词:游戏,连连看,二维游戏ABSTRACTToday'ssociety,Casualgamesgetmoreandmorepopularamongpeople,Ididpopularinrecentyearsthenetworkofatwo-dimensionalcasualgames.Itslessdemandingcomputerconfiguration,Entertaining,Easytofly.ThelanguageusedingraduatedesignlanguagefortheJava,DevelopmentenvironmentfortheJCreator.MainlyappliedtotheMicrosoftSwingframeworkprovidesmoredocumentationproceduresandeventsfunctionstointerface.Thegameinterfaceoffersconvenientconditionsforproduction,Themainfeaturesofthissystemistouseeventsframeworkandinterfacetechnologytointerfacemapping,mouseoperations,anddisplayfunctionsstandings.ThedesignanddevelopmentbyLianliankanSwingframeworkwillunderstandthetechnologyandtheeventsapplicationoftechnologyinthegamesplayedveryhelpful,Javaprogrammingforbothmasterandtwo-dimensionalrecreationofthegeneralmethodofgamedesignandlayasolidfoundation.Keywords:Games,Lianliankan, two-dimensionalgame目录\o"CurrentDocument"第1章绪论 0\o"CurrentDocument"背景 0\o"CurrentDocument"课程设计内容 0\o"CurrentDocument"第2章连连看游戏界面 0连连看游戏概述 2\o"CurrentDocument"连连看游戏的规则 2\o"CurrentDocument"连连看胜利与失败条件 3\o"CurrentDocument"连连看系统介绍 3\o"CurrentDocument"第3章连连看游戏的设计 5\o"CurrentDocument"系统需求分析 5\o"CurrentDocument"系统开发及运行环境 5\o"CurrentDocument"系统主要功能要求 5\o"CurrentDocument"连连看系统总体结构 6\o"CurrentDocument"连连看系统各模块介绍 7\o"CurrentDocument"第4章系统的具体实现 9\o"CurrentDocument"界面设计 10\o"CurrentDocument"用户登陆界面图 9结束界面 错误!未定义书签。\o"CurrentDocument"程序设计及调试运行 13\o"CurrentDocument"游戏的连接算法 14\o"CurrentDocument"第5章总结 18\o"CurrentDocument"参考文献 20第1章绪论背景游戏“连连看”顾名思义就是找出相关联的东西,这个连连看在网上基本是用在小游戏中,就是找出相同的两样东西,在一定的规则之内可以做为相关联处理。“连连看”的发展经历了从桌面游戏、在线游戏、不同版本连连看游戏(12张)社交游戏三个过程。游戏“连连看”是源自台湾的桌面小游戏,自从流入大陆以来风靡一时,也吸引众多程序员开发出多种版本的“连连看”。这其中,顾方编写的“阿达连连看”以其精良的制作广受好评,这也成为顾方“阿达系列软件”的核心产品。并于2004年,取得了国家版权局的计算机软件著作权登记证书。随着Flash应用的流行,网上出现了多种在线Flash版本“连连看”。如“水晶连连看”、“果蔬连连看”等,流行的“水晶连连看”以华丽界面吸引了一大批的女性玩家。2008年,随着社交网络的普及和开放平台的兴起,“连连看”被引入了社交网络。“连连看”与个人空间相结合,被快速的传播,成为一款热门的社交游戏,其中以开发者JOnevey在ManyOu开放平台上推出的“宠物连连看”最为流行。现在网络小游戏、网页游戏越来越受网民欢迎,除了玩的方法简单外(不像其他游戏还需要注册下载繁琐过程),很多游戏不乏经典。连连看游戏就是典型。不管走到哪个网页游戏网站,连连看游戏总是排在受玩家欢迎排名的前5位,休闲、趣味、益智是连连看玩不厌的精华,且不分男女老少、工薪白领,是一款适合大众的经典网络休闲小游戏。课程设计内容游戏规则是模仿网络上普通的连连看游戏,主要是鼠标两次点击的图片能否消去的问题。当前,前提是点击两张相同的图片,若点击的是同一张图片或者两张不同的图片,则不予处理。在两张想同图片所能连通的所有路径中,如果存在一条转弯点不多于两个的路径,就可以消去;如果没有,则不予处理。该游戏由30张不同的图片组成,游戏开始将会出现30张随机组合的图片,在规则下点击两张相同的图片后图片将会消失。图片全部消完为游戏成功。游戏还将设置退出,再来一局的按钮,并实现该功能,方便用户进行操作。该游戏将有如下内容:(1)游戏计分功能当消去两个相同的图片后分数将增加100分。(2)退出功能该功能有一个“退出”按钮,当按下“退出”按钮后,将直接退出游戏。(3)再来一局功能该功能有一个“再来一局”的按钮,当按下“再来一局”按钮后,图片将会重新排列,重新开始游戏。(4)游戏倒计时功能在游戏界面的上方有一个倒计时的进度条,增加游戏的难度,激发玩家的挑战兴趣。(5)用户登录注册功能在进入游戏界面之前,将会出现用户登录界面,如果没有注册的玩家在按下“注册”按钮后将进入注册界面,玩家需要填写用户名,密码,性别等信息完成注册,再进入登录界面,输入用户名和密码按下“确定”后就将进入游戏界面,开始游戏。第2章连连看游戏界面连连看游戏概述当今社会,休闲型游戏越来越得到人们的喜爱,我们所做的设计实例“连连看游戏的设计与实现”是近几年来网络上非常流行的一种二维休闲游戏,它对电脑配置要求不高,娱乐性强,易于上手。此次设计所使用的语言为Java,开发环境为JCreator。主要应用到Swing组件,Java小程序,事件及接口等。这些接口为游戏的制作提供了便捷的条件,本系统的主要特点就是运用SWing组件和事件处理技术,进行界面的绘制,鼠标的操作,以及积分的显示等功能。这次通过连连看的设计开发将对理解Swing组件技术以及事件处理技术在游戏方面的应用起到很大的帮助作用,同时为掌握Java编程技术及二维休闲游戏设计的一般方法打下坚实的基础。随着Flash应用的流行,网上出现了多种在线Flash版本“连连看”。如“水晶连连看”、“果蔬连连看”等,流行的“水晶连连看”以华丽界面吸引了一大批的女性玩家。不管走到哪个网页游戏网站,连连看游戏总是排在受玩家欢迎排名的前5位,休闲、趣味、益智是连连看玩不厌的精华,且不分男女老少、工薪白领,是一款适合大众的经典网络休闲小游戏连连看游戏的规则玩家可以将2个相同图案的对子连接起来,连接线不多于3根直线,就可以成功将对子消除。操作:第一次使用鼠标点击棋盘中的棋子,该棋子此时为“被选中”,以特殊方式显示;再次以鼠标点击其他棋子,若该棋子与被选中的棋子图案相同,且把第一个棋子到第二个棋子连起来,中间的直线不超过3根,则消掉这一对棋子,否则第一颗棋子恢复成未被选中状态,而第二颗棋子变成被选中状态。连连看胜利与失败条件胜利条件:将棋盘上面的对子全部消除掉。按消除的数量排列名次。失败条件:每个玩家选择牌的时间为30秒,超过时间而未消除一对的玩家以判为输掉。有一个玩家将所有的牌都全部消掉。2连连看系统介绍根据第三章的需求分析,我们制作出了连连看游戏在Windows平台上运行时的主要功能图。根据此连连看的功能图我们将对连连看游戏进行概要设计和详细设计。继而开发出一个完整的连连看电脑游戏。总体的系统图如下图所示:图2-1系统功能图连连看是运用JCreatOr中的多文档视图开发的,文档——视图结构提供的应用程序接口有利于进行窗口操作、文件读取等编程。连连看游戏引擎包含在视图类中。游戏引擎是一个抽象的概念,用于实现游戏的逻辑功能,通常在一个独立的类中,有时引擎和视图是一体的,并且可能无可避免,因为视图需要为引擎处理用户输入和绘图。游戏程序设计一般都采用面向对象的设计模式,提供了一个简单的图像显示接口,利用多文档视图结构的面向对象设计模式。2.3本章小结这一章介绍了连连看应该具备的功能模块,在这一章中,我们可以了解什么是连连看,当前连连看系统的系统,还有一个连连看系统应该的开发目标。第3章连连看游戏的设计这一章将介绍连连看游戏的设计,从游戏需求分析开始,介绍开发环境和用到的开发工具,系统主要的功能设计,系统的数据流程图。系统需求分析连连看游戏的设计目标为:(1)该游戏开始前,将设置一个用户登录注册界面,如果没有注册的玩家在按下“注册”按钮后将进入注册界面,玩家需要填写用户名,密码,性别等信息完成注册,再进入登录界面,输入用户名和密码按下“确定”后就将进入游戏界面,开始游戏。(2)游戏中将有“退出”功能,选择退出命令后程序将终止执行,关闭窗口。还将有“再来一局”功能,选择再来一局命令后程序将对图片重新排列,重新开始游戏。该游戏还有一个时间倒计时的进度条,提醒玩家剩余的时间,增加游戏的难度。在界面的顶部有计分功能,当玩家消去图片后就会赢得相应的分数。系统开发及运行环境硬件平台:CPU:P41.8GHz。内存:256MB以上。软件平台:操作系统:Windows7。系统主要功能要求本系统针对中小学生的娱乐时间,通过程序中的线程、布局以及用户登录还有另外的一些功能进行有效管理。本系统主要实现如下功能:系统采用图片连连看的方式,界面美观友好,用户使用灵活、方便、快捷、准确,数据存储安全可靠。实现用户登录注册功能。图片的消除、排列清晰。计分自动完成,提高工作效率。用进度条来表现用掉的时间。实现多条件查询。可方便快捷地进行下一盘游戏,并且两盘的分数在规定的时间内会叠加起来。操作员可以随时退出游戏。对用户输入的信息,系统进行严格的信息检验,尽可能排除人为的错误。系统最大限度地实现了易维护性和易操作性。系统运行稳定、安全可靠。.4.1连连看系统总体结构连连看是基于java基本知识设置的一个小游戏,刚开始的时候有一个用户登陆界面,要是没有账号的可以先申请一个。最中间有连连看的主体构成——连连看图片,上面有计分、时间条,下面有退出、再来一局按键。一个标准的连连看系统应该包括以下几大功结构:1、鼠标操作模块;2、图像处理模块;3、菜单模块;4、界面显示模块。.4.2连连看系统各模块介绍系统各功能模块实现的功能为:鼠标操作模块:玩家在玩游戏时需要运用鼠标与游戏系统进行交互,这个模块的实现是运用MFC中的鼠标事件触发的,在连连看的游戏场景中运用鼠标进行交互的事件主要有两个,一个是用户点击游戏场景中的图片时触发的事件。另外一种是用户点击菜单栏上的菜单按钮时说触发的鼠标事件。当用户点击游戏场景中的图像块时就会响应鼠标的OnLButtonDOwn事件,然后进行相应的逻辑判断。当用户点击菜单栏上的菜单命令时就会触发相应的菜单命令对应的相应的事件。图像处理模块:程序运行后,用户通过游戏菜单的开始命令或者直接按下F2键开始进入游戏,在这个模块里要把资源文件中的图片进行处理然后加载到游戏场景中这在程序中是通过DrawMaP()方法实现的。其中用到的API函数主要是是BitBlt,他的主要功能是将某一内存块的数据传送到另一内存块,前一内存块被称为源,后一内存块被称为目标图象程序开发者使用Blit的函数在内存中将某页面上的一幅位图经过一定的变换转移到另一个页面上。菜单模块:玩家在游戏游戏过程中随时可以通过选择不同的菜单命令来进行相应的操作,菜单的制作是通过MFC框架中多文档程序的菜单栏来添加的,菜单包含一下几个部分:(1)游戏菜单中的开始、放弃和退出命令。(2)选项菜单里面的提示、重列、暂停、音乐、音效、和积分命令。(3)帮助菜单,介绍了游戏的版本等。具体的实现方法下一张将在做详细介绍。界面显示模块:游戏场景中界面的显示包括以下部分:游戏的级别、关卡数、允许重新排列的次数、允许的提示次数、剩余时间、游戏主场景。这些显示信息会随着游戏的进行而动态改变。当提示次数和重列次数为0时系统就不在允许用户使用提示和重列的功能。在连连看游戏中,除了上面讲到的程序主界面外还包含了显示积分和排名的对话框的设计,在积分和排名对话框中,用户可以查看积分排名情况,可以清除排名记录。整个连连看游戏的系统是在VC++6.0开发环境中进行开发的,开发过程中大量的使用了微软提供的API接口方法,减少了程序代码的编写量、提高了编程效3.5本章小结本章在前面分析的基础上实现了连连看游戏的设计,实现了连连看游戏的背景显示功能、菜单功能、以及连连看游戏中的核心算法。在菜单功能模块中针对每个菜单的命令进行了详细的解释和阐释实现了每一个子菜单的命令。在连接算法中,给出了每一个算法的程序逻辑了和详细的算法实现。并且还绘制出了每一种连接情况的具体图片。在连连看游戏的其他算法中列出了时间进度显示的实现方法和一些重要的数据结构,在此可以结合程序详细的研究。第4章系统的具体实现界面是系统之间最直接的交互界面,界面的友好性体现了软件设计的质量,并在很大程度上决定了软件是否成功。界面设计用户登陆界面图如图4-1和图4-2所示图4.-1用户登录模块框图图4-2用户登陆界面4.1.2结束界面N关键代码:publicvoidremove(){firstButton.setVisible(false);//不可见secondButton.setVisible(false);fraction();pressInformation=false;k=0;grid[x0][y0]=0;grid[x][y]=0;}publicvoidactionPerformed(ActionEvente){if(e.getSource()==newlyButton){intgrid[][]=newint[8][7];this.grid=grid;randomBuild();mainFrame.setVisible(false);pressInformation=false;init();}if(e.getSource()==exitButton)System.exit(0);//if(e.getSource()==resetButton)//reload();newActionListener(){if(e.getSource()==timer){if(time.isEnd()){timer.stop();if(JOptionPane.showConfirmDialog(mainFrame,时间到了,o(-ʌ-)o 要再来一局吗? 提示JOptionPane.YES_NO_OPTION) ==JOptionPane.OK_OPTION){intgrid[][]=newint[8][7];this.grid=grid;randomBuild();mainFrame.setVisible(false);pressInformation=false;init();timer.start();}elseSystem.exit(0);}}for(intcols=0;cols<6;cols++){for(introws=0;rows<5;rows++){if(e.getSource()==diamondsButton[cols][rows])estimateEven(cols+ 1,rows+ 1,diamondsButton[cols][rows]);}}}程序设计及调试运行按功能模块结构设计菜单,布置各明细模块工作界面,编写各个模块的程序代码,进行编译连接运行,经过反复调试修改,以达到系统功能要求。这个过程具有大量的工作量,应仔细对每个程序细节进行分析思考、编写程序并调试,做到程序简洁清楚,尽量避免可能潜在的程序错误,并在必要的地方加以注释,以便于程序阅读和修改。游戏的连接算法连连看游戏中对于用户来说最简单的呈现就是单击两个连在一起的的相同的图像时这两个图像就会消去。即使不是紧邻的两个相同的图像块消去时也不能超过两次转弯。连连看游戏的联通算法一般包括回溯法和堆栈实现的迷宫算法。在本次开发的连连看中两个图像块可以消去的情况分为以下几种情况。设第一个图像块的横坐标为xl,纵坐标为yl,第二个图像块的横坐标为x2,纵坐标为y2.两个图像块在在统一行上面,即xl=x2且yl>y2或者xl=x2且yl<y2,如下图所示:◎@图4-4同行两个图像块在同一列,即yl=y2且xl>x2或者yl=y2且xl<x2,如下图所示:⅜φ图4-5同列两个相同的图像块是相对的,记一个图像在另一个图像的右下角,即:χl<χ2且yl<y2或者xl>x2且yl>y2两种情况。具体如下图所示:图4-6对角的∙两个相同的图像块是相对的,记一个图像在另一个图像的右下角,即:x1<x2且yl>y2或者xl>x2且yl<y2两种情况。具体如下图所示:图4-7左对角在上面的四种情况当中又包含了许多中可能。针对同行的两个相同的颜色的图像块来说又可分为两种情况,即:在同一行相邻和同一行不相邻的情况,不相临的情况下有可以分为两种,能消去的和不能消去的。同在一列的也是这样。至于两个点之间存在折线的,也可以分为两种情况,一种是存在折线但是能够消除掉这两个颜色相同的图像块,一种是不能消除的,本人在设计程序的时候针对不同的情况分别进行了判断和设计。下面分别对程序的算法进行讨论。首先是判断在同一行中除起始点图像块以外到其他的图像块之间还有没有其他的图像块。如果有函数返回false,如果没有函数返回true。其逻辑图如下图所示:图4-8ISLinePicEmPty逻辑图ISLinePiCEmPty方法主要是通过两个图像块的坐标来判断两个图像块之间是不是还有其他的图像块,上面的函数实现了同在一行或一列的图像块的检测下面的算法则实现了判断一条直线上的两个点是不是可以联通的。算法逻辑跟上面ISLinePiCEmPt算法一样,即检查相同的行或列上的两个相同图像块是不是可以连通的,即:两个之间是不是还有其他图像块,算法逻辑图如下图所示:图4-9IsLineConnection在连连看的连接算法中上面的程序解决了在同一行或同一列中的相同图像块的检测,下面的算法则解决了在两个相同图像块之间存在一条折线的问题。算法的具体的逻辑设计图图下

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论