Java课程设计方案连连看游戏(含代码)_第1页
Java课程设计方案连连看游戏(含代码)_第2页
免费预览已结束,剩余43页可下载查看

下载本文档

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

文档简介

1、Java 程序课程设计任务书一、 主要任务与目标1 、了解图形用户界面的概念;2 、了解 AWT 的基本体系结构,掌握窗口的基本原理;3 、掌握几种布局管理器的使用方法;4 、掌握 java 的事件处理机制;5 、了解 Swing 的基本体系结构,掌握 Swing 组件的使用方法;6、掌握 java 小程序的工作原理和使用方法;7 、该游戏还将设置退出,再来一局按钮,并实现相应的功能。8 、设计一个用户注册登录界面二、 主要内容与基本要求游戏规则是模仿网络上普通的连连看游戏,主要是鼠标两次点击的图片能否消去 的问题。当前,前提是点击两张相同的图片,若点击的是同一张图片或者两张不 同的图片,则不

2、予处理。在两张想同图片所能连通的所有路径中,如果存在一条 转弯点不多于两个的路径,就可以消去;如果没有,则不予处理。 该游戏由 30 张不同的图片组成,游戏开始将会出现 30 张随机组合的图片,在 规则下点击两张相同的图片后图片将会消失。图片全部消完为游戏成功。游戏还 将设置退出,再来一局的按钮,和倒计时的功能,方便用户进行操作。并且有一 个用户登录注册界面,玩家必须登录以后才可以进行游戏。三、 计划进度12 月 28 日 12 月 29 日:课程设计选题,查找参考资料12 月 30 日 12 月 31 日:阅读参考书籍,收集资料,完成需求分析1 月 1 日 1 月 3 日:系统的代码设计及实

3、现,数据库设计与实现1 月 4 日 1 月 5 日:系统的调试,修改,完善1 月 6 日 1 月 7 日:完成课程设计报告,准备答辩四、 主要参考文献1 刘宝林.Java 程序设计与案例习题解答与实验指导M.2 王鹏何云峰.Swing 图形界面开发与案例分析M.3 (美)Karl Avedal ,Danny Ayers,TimothyBriggs.JSP 编程指南M.电子工业出版社, 2004,47-125.4 (美)Mark Linsenbardt.JSP 在数据库中的应用与开发M.希望电子出版社,2005,210-236.5 Dianne Phelan, Building a simple

4、 web database applicationC.IEEE InternationalProfessional Communication Conference, 2004, 79-86.6 (美)Karl Avedal,Danny Ayers,Timothy Briggs.JSP 编程指南M.电子工业出版社,2006,47-125.7 Dianne Phelan, Building a simple web database applicationC.IEEE InternationalProfessional Communication Conference, 2005, 79-86.

5、8 Altendorf. Eric, Hohman. Moses, Zabicki. Roman. Using J2EE on alarge, webbased projectJ. IEEE Software.2002,19(02):81-89.摘要当今社会,休闲型游戏越来越得到人们的喜爱,我所做的毕业设计实例“连 连看游戏的设计与实现”是近几年来网络上非常流行的一种二维休闲游戏,它对 电脑配置要求不高,娱乐性强,易于上手。此次设计所使用的语言为 Java 语言,开发环境为 JCreator 。主要应用到 Swing 组件, Java 小程序,事件及接口等。这些接口为游戏的制作提供了便捷的 条

6、件,本系统的主要特点就是运用 Swing 组件和事件处理技术,进行界面的绘 制,鼠标的操作,以及积分的显示等功能。这次通过连连看的设计开发将对理解 Swing 组件技术以及事件处理技术在游 戏方面的应用起到很大的帮助作用,同时为掌握 Java 编程技术及二维休闲游戏 设计的一般方法打下坚实的基础。本文阐述了实例“连连看”的设计思想和实现。全文分为五章。第一章对选 题的背景及工程的功能进行了简要叙述。第二章介绍了开发本系统所使用的 Java 语言、Swing组件和事件处理技术。第三章介绍了系统的需求分析。第四章 则对游戏的各功能模块及实现算法等详细设计进行了介绍。第五章对程序运行与 调试中经历的

7、问题和学到的编程及游戏设计经验进行总结。关键词 : 游戏,连连看,二维游戏ABSTRACTTodays society, Casual games get more and more popular among people, I didgraduate design example, Design and Implementation Lianliankan game is verypopular in recent years the network of a two-dimensional casual games. Its lessdemanding computer configur

8、ation, Entertaining, Easy to fly.The language used in graduate design language for the Java, Developmentenvironment for theJCreator. Mainly applied to the Microsoft Swing framework providesmore documentation procedures and events functions to interface. The game interfaceoffers convenient conditions

9、 for production, The main features of this system is to useevents framework and interface technology to interface mapping, mouse operations,and display functions standings.The design and development by Lianliankan Swing framework will understand thetechnology and the events application of technology

10、 in the games played very helpful,Java programming for both master and two-dimensional recreation of the generalmethod of game design and lay a solid foundation.In this paper, examples of Lianliankan The design and implementation. Paper isdivided into five chapters. Chapter I of the project backgrou

11、nd and project a briefdescription of the function. The second chapter describes the development of thissystem uses Java language, Swing framework of the technology and Event interfacetechnology. The third chapter describes the system requirements analysis. The fourthchapter of the games various func

12、tion modules and the detailed design algorithm wasintroduced. Chapter V of the program is running and debugging the problemsexperienced and learned programming and game design experience summary.Keywords: Games, Lianliankan, two-dimensional game目录JAVA 程序课程设计任务书摘要 IABSTRACT目录 III第 1 章引言 01.1 背景 01.2

13、课程设计内容 01.3 任务分工 1 2 章连连看游戏界面错误!未定义书签2.1 连连看游戏概述 12.1.1 连连看游戏的规则 22.1.2 连连看胜利与失败条件 22.2 连连看系统介绍 32.3 本章小结 4第 3 章连连看游戏的设计 43.1 系统需求分析 43.2 系统开发及运行环境 43.3 系统主要功能要求 53.4.1 连连看系统总体结构 53.4.2 连连看系统各模块介绍 63.5 本章小结 7第 4 章系统的具体实现 74.1 界面设计 84.1.1 用户登陆界面图 84.1.2 注册界面 114.1.3 系统界面 13 4.1.4 执行界面 144.2 程序设计及调试运行

14、 234.2.1 游戏的连接算法 234.2.3 JFreeChart 26第 5 章结束语 27致谢 28参考文献 28附录源代码 28第 1 章 引言1.1背景游戏“连连看”顾名思义就是找出相关联的东西,这个连连看在网上基本 是用在小游戏中,就是找出相同的两样东西,在一定的规则之内可以做为相关联 处理。“连连看”的发展经历了从桌面游戏、在线游戏、不同版本连连看游戏 (12 张)社交游戏三个过程。游戏“连连看”是源自台湾的桌面小游戏,自从流入大陆以来风靡一时, 也吸引众多程序员开发出多种版本的“连连看”。这其中,顾方编写的“阿达连 连看”以其精良的制作广受好评,这也成为顾方“阿达系列软件”的

15、核心产品。 并于 2004 年,取得了国家版权局的计算机软件著作权登记证书。随着 Flash 应用的流行,网上出现了多种在线 Flash 版本“连连看”。如 “水晶连连看”、“果蔬连连看”等,流行的“水晶连连看”以华丽界面吸引了 一大批的女性玩家。2008 年, 随着社交网络的普及和开放平台的兴起, “连连看”被引入了社 交网络。“连连看”与个人空间相结合,被快速的传播,成为一款热门的社交游 戏,其中以开发者 Jonevey 在 Manyou 开放平台上推出的“宠物连连看”最为流 行。现在网络小游戏、网页游戏越来越受网民欢迎,除了玩的方法简单外(不 像其他游戏还需要注册下载繁琐过程),很多游戏

16、不乏经典。连连看游戏就是典 型。不管走到哪个网页游戏网站,连连看游戏总是排在受玩家欢迎排名的前 5 位,休闲、趣味、益智是连连看玩不厌的精华,且不分男女老少、工薪白领,是 一款适合大众的经典网络休闲小游戏。1.2课程设计内容游戏规则是模仿网络上普通的连连看游戏,主要是鼠标两次点击的图片能否消去 的问题。当前,前提是点击两张相同的图片,若点击的是同一张图片或者两张不 同的图片,则不予处理。在两张想同图片所能连通的所有路径中,如果存在一条 转弯点不多于两个的路径,就可以消去;如果没有,则不予处理。 该游戏由 30 张不同的图片组成,游戏开始将会出现 30 张随机组合的图片,在 规则下点击两张相同的

17、图片后图片将会消失。图片全部消完为游戏成功。游戏还 将设置退出,再来一局的按钮,并实现该功能,方便用户进行操作。该游戏将有如下内容:( 1)游戏计分功能 当消去两个相同的图片后分数将增加 100 分。(2)退出功能 该功能有一个“退出”按钮,当按下“退出”按钮后,将直接退出游戏。(3)再来一局功能 该功能有一个“再来一局”的按钮,当按下“再来一局”按钮后,图片将会 重新排列,重新开始游戏。( 4)游戏倒计时功能 在游戏界面的上方有一个倒计时的进度条,增加游戏的难度,激发玩家的挑 战兴趣。(5)用户登录注册功能 在进入游戏界面之前,将会出现用户登录界面,如果没有注册的玩家在按下“注册”按钮后将进

18、入注册界面,玩家需要填写用户名,密码,性别等信息完成 注册,再进入登录界面,输入用户名和密码按下“确定”后就将进入游戏界面, 开始游戏。1.3任务分工2 章 连连看游戏界面2.1连连看游戏概述当今社会,休闲型游戏越来越得到人们的喜爱,我们所做的设计实例 “连连看游 戏的设计与实现 ”是近几年来网络上非常流行的一种二维休闲游戏,它对电脑配置要求不 高,娱乐性强,易于上手。此次设计所使用的语言为 Java,开发环境为JCreator。主要应用到 Swing 组件,Java 小程序,事件及接口等。这些接口为游戏的制作提供了便捷的条件,本系 统的主要特点就是运用 Swi ng 组件和事件处理技术,进行

19、界面的绘制,鼠标的操 作,以及积分的显示等功能。这次通过连连看的设计开发将对理解 Swing 组件技术以及事件处理技术在游 戏方面的应用起到很大的帮助作用,同时为掌握 Java 编程技术及二维休闲游戏 设计的一般方法打下坚实的基础。随着 Flash 应用的流行,网上出现了多种在线 Flash 版本“连连看”。如 “水晶连连看”、“果蔬连连看”等,流行的“水晶连连看”以华丽界面吸引了 一大批的女性玩家。不管走到哪个网页游戏网站,连连看游戏总是排在受玩家欢迎排名的前5位,休闲、趣味、益智是连连看玩不厌的精华,且不分男女老少、工薪白领,是 一款适合大众的经典网络休闲小游戏2.1.1 连连看游戏的规则

20、玩家可以将 2 个相同图案的对子连接起来,连接线不多于 3 根直线,就可 以成功将对子消除。操作 :第一次使用鼠标点击棋盘中的棋子,该棋子此时为 “被选中 ”,以特殊方式显示; 再次以鼠标点击其他棋子,若该棋子与被选中的棋子图案相同,且把第一个棋子 到第二个棋子连起来,中间的直线不超过 3 根,则消掉这一对棋子,否则第一 颗棋子恢复成未被选中状态,而第二颗棋子变成被选中状态。2.1.2 连连看胜利与失败条件胜利条件:将棋盘上面的对子全部消除掉。按消除的数量排列名次。 其他玩家都输掉了。每个玩家选择牌的时间为 30 秒,超过时间而未消除一对的玩家以判为输掉。有 一个玩家将所有的牌都全部消掉。2.

21、2 连连看系统介绍根据第三章的需求分析,我们制作出了连连看游戏在Windows 平台上运行时的主要功能图。根据此连连看的功能图我们将对连连看游戏进行概要设计和详 细设计。继而开发出一个完整的连连看电脑游戏。总体的系统图如下图所示:界面显托欖块汕I哇|_1和+ -o-pf:flr sat图 2.1 系统功能图连连看是运用 JCreator 中的多文档视图开发的,文档一一视图结构提供的应 用程序接口有利于进行窗口操作、文件读取等编程。连连看游戏引擎包含在视图类中。游戏引擎是一个抽象的概念,用于实现游 戏的逻辑功能,通常在一个独立的类中,有时引擎和视图是一体的,并且可能无 可避免,因为视图需要为引擎

22、处理用户输入和绘图。游戏程序设计一般都采用面向对象的设计模式,提供了一个简单的图像显示 接口,利用多文档视图结构的面向对象设计模式。2.3本章小结这一章介绍了连连看应该具备的功能模块,在这一章中,我们可以了解什么 是连连看,当前连连看系统的系统,还有一个连连看系统应该的开发目标。第 3 章 连连看游戏的设计这一章将介绍连连看游戏的设计,从游戏需求分析开始,介绍开发环境和用 到的开发工具,系统主要的功能设计,系统的数据流程图。3.1系统需求分析连连看游戏的设计目标为:(1)该游戏开始前,将设置一个用户登录注册界面,如果没有注册的玩家在 按下“注册”按钮后将进入注册界面,玩家需要填写用户名,密码,

23、性别等信息 完成注册,再进入登录界面,输入用户名和密码按下“确定”后就将进入游戏界 面,开始游戏。(2)游戏中将有“退出”功能,选择退出命令后程序将终止执行,关闭窗 口。还将有“再来一局”功能,选择再来一局命令后程序将对图片重新排列,重新开 始游戏。该游戏还有一个时间倒计时的进度条,提醒玩家剩余的时间,增加游戏 的难度。在界面的顶部有计分功能,当玩家消去图片后就会赢得相应的分数。3.2系统开发及运行环境硬件平台:CPU:P41.8GHz。内存: 256MB 以上。软件平台:操作系统: Windows XP 。数据库: MySQL 5.0 开发工具包: JDK Version1.6.2。JSP

24、服务器:Tomcat 6.(。浏览器:IE5.0,推荐使用 IE6.0。分辨率:最佳效果 1024X768 像素。3.3系统主要功能要求本系统针对中小学生的娱乐时间,通过程序中的线程、布局以及用户登录还 有另外的一些功能进行有效管理。本系统主要实现如下功能: 系统采用图片连连看的方式,界面美观友好,用户使用灵 活、方便、快捷、准确,数据存储安全可靠。实现用户登录注册功能。图片的消除、排列清晰。计分自动完成,提高工作效率。用进度条来表现用掉的时间。实现多条件查询。可方便快捷地进行下一盘游戏,并且两盘的分数在规定的时间内会叠加起来。操作员可以随时退出游戏。对用户输入的信息,系统进行严格的信息检验,

25、尽可能排除人为的错误。系统最大限度地实现了易维护性和易操作性。系统运行稳定、安全可靠。3.4.1 连连看系统总体结构连连看是基于 java 基本知识设置的一个小游戏,刚开始的时候有一个用户 登陆界面,要是没有账号的可以先申请一个。最中间有连连看的主体构成连 连看图片,上面有计分、时间条,下面有退出、再来一局按键。一个标准的连连 看系统应该包括以下几大功结构:1 、鼠标操作模块;2、图像处理模块;3、声音信息模块;4、菜单模块;5、界面显示模块。3.4.2 连连看系统各模块介绍系统各功能模块实现的功能为: 鼠标操作模块:玩家在玩游戏时需要运用鼠标与游戏系统进行交互,这个模 块的实现是运用 MFC

26、 中的鼠标事件触发的,在连连看的游戏场景中运用鼠标进 行交互的事件主要有两个,一个是用户点击游戏场景中的图片时触发的事件。另 外一种是用户点击菜单栏上的菜单按钮时说触发的鼠标事件。当用户点击游戏场景中的图像块时就会响应鼠标的 OnLButtonDown 事件, 然后进行相应的逻辑判断。当用户点击菜单栏上的菜单命令时就会触发相应的菜单命令对应的相应的事 件。图像处理模块 : 程序运行后,用户通过游戏菜单的开始命令或者直接按下 F2 键开始进入游戏,在这个模块里要把资源文件中的图片进行处理然后加载到 游戏场景中这在程序中是通过 DrawMap() 方法实现的。其中用到的 API 函数主 要是是 B

27、itBlt ,他的主要功能是将某一内存块的数据传送到另一内存块,前一内存块被称为 源,后一内存块被称为 目标 图象程序开发者使用 Blit 的函数在内 存中将某页面上的一幅位图经过一定的变换转移到另一个页面上。声音信息模块 : 在游戏过程中,当玩家成功消去一对图像块后播放一个提示 音,当消去失败的时候会播放另外一个提示音,根据用户操作结果的不同播放不 同的音乐提示,这在一定程度上能够增加用户对游戏的沉侵感。对声音模块信息 的管理在程序中是通过 API 中的 PlaySound 函数来实现的。菜单模块 : 玩家在游戏游戏过程中随时可以通过选择不同的菜单命令来进行 相应的操作,菜单的制作是通过 M

28、FC 框架中多文档程序的菜单栏来添加的,菜 单包含一下几个部分 :(1)游戏菜单中的开始、放弃和退出命令。(2)选项菜单里面的提示、重列、暂停、音乐、音效、和积分命令。 (3)帮助菜单,介绍了游戏的 版本等。具体的实现方法下一张将在做详细介绍。界面显示模块 : 游戏场景中界面的显示包括以下部分:游戏的级别、关卡 数、允许重新排列的次数、允许的提示次数、剩余时间、游戏主场景。这些显示 信息会随着游戏的进行而动态改变。当提示次数和重列次数为 0 时系统就不在允 许用户使用提示和重列的功能。在连连看游戏中,除了上面讲到的程序主界面外还包含了显示积分和排名的 对话框的设计,在积分和排名对话框中,用户可

29、以查看积分排名情况,可以清除 排名记录。整个连连看游戏的系统是在 VC+6.0 开发环境中进行开发的,开发过程中大 量的使用了微软提供的 API 接口方法,减少了程序代码的编写量、提高了编程 效率。3.5 本章小结本章在前面分析的基础上实现了连连看游戏的设计,实现了连连看游戏的背 景显示功能、菜单功能、以及连连看游戏中的核心算法。在菜单功能模块中针对每个菜单的命令进行了详细的解释和阐释实现了每一 个子菜单的命令。在连接算法中,给出了每一个算法的程序逻辑了和详细的算法实现。并且还 绘制出了每一种连接情况的具体图片。在连连看游戏的其他算法中列出了时间进度显示的实现方法和一些重要的数 据结构,在此可

30、以结合程序详细的研究。第 4 章 系统的具体实现界面是系统之间最直接的交互界面 , 界面的友好性体现了软件设计的质量 , 并在很大程度上决定了软件是否成功。4.1 界面设计4.1.1 用户登陆界面图图 4.1.1 用户登录模块框图自动跳转弹出错误信息如图 4.1.1 和图 4.1.2 所示图 4.1 用户登陆界面此 JavaScript 函数的作用是检测用户登陆的合法性,并确认用户输入了合法的登 录名和口令。部分代码:privatevoid log in Dialog() log in = new JDialog()。login .setTitle(登录)。login .setLayout(

31、new FlowLayout()。log in .add( new JLabel(用户名:)。 finalJTextField name = newJTextField(10)。 login .add(name)。log in .add (new JLabel(密 码:)。final JPasswordField password =n ewJPasswordField(10)。password.setEchoChar( *)。login .add(password)。JButton confirm =new JButton( ” 登录)。con firm.addActi on Liste n

32、er(new Actio nListe ner() publicvoid actio nPerformed(Actio nEve nt e) if(compareUserData(name.getText().trim(),newStrin g(password.getPassword() log in .setVisible( false )。mainFramesetVisible(true )。Timer timer =new Timer(100,n ewActio nListe ner() publicvoid actio nPerformed(Actio nEve nt e) if (

33、 time .isEnd() System.exit (0)0)otimer.start()。 else JOptionPane. showMessageDialog( login,” 用户名或密码错 误!,错误提示, JOptionPane. ERROR_MESS)AGE) 。login .add(confirm) 。final JDialog regDialog = newJDialog( login , 注册, true )。 registerDialog(regDialog)。JButton register =new JButton( 注册)。register.addActionLi

34、stener(new ActionListener() publicvoid actionPerformed(ActionEvent e) regDialog.setVisible( true )。) 。login .add(register) 。login .setSize(400, 200)。login .setResizable( false )。login .setLocationRelativeTo( null )。login .setVisible( true )。privateboolean compareUserData(String name, String password

35、) try RandomAccessFile out = newRandomA ccessFile( user.dat , rw )。String fname, fpassword = null 。while (out.getFilePointer() 冉来局34.1.4 执行界面200H退榭 再乘一局图 5.3 报表生成界面4.1.5时间到的界面:关键代码:public void remove() firstButton.setVisible(false)。/ 不可见seco ndButt on .setVisible(false)。fractio n()。pressl nformatio

36、n = false 。k = 0。gridxOyO = 0。gridxy = 0。public void action Performed(Acti on Eve nt e) if (e.getSource() = n ewlyButton) int grid = new in t87 this.grid = grid 。randomBuild()。mainFrame.setVisible(false) 。 pressInformation = false 。 init() 。?TjiKJ连连看毘示退出时间到了巩*木要再来一局吗?if (e.getSource() = exitButton)S

37、ystem.exit(0) 。/ if(e.getSource()=resetButton)/ reload()。 new ActionListener() if (e.getSource() = timer) if (time.isEnd() timer.stop() 。if (JOptionPane.showConfirmDialog(mainFrame,时间到了,o()o n 要再来一局吗?, 提示,JOptionPane.YES_NO_OPTION) =JOptionPane.OK_OPTION) int grid = new int87。this.grid = grid 。rando

38、mBuild() 。 mainFrame.setVisible(false) 。pressInformation = false 。 init() 。timer.start() 。 elseSystem.exit(0) 。for (int cols = 0。 cols 6 。 cols+) for (int rows = 0。 rows 5 。 rows+) if(e.getSource()=diamondsButtoncolsrows)estimateEve n( cols+1, rows +1,diam on dsButt on colsrows)。进度条界面:关键代码:publicvoi

39、d xiao() /相同的情况下能不能消去。if ( x0=x &(yO=y+1| y0=y-1) | (x0=x+1| x0=x-1)&( y0=y) / 判断是否相邻remove()。elsefor ( j =0。j j) /如果第二个按钮的丫坐标大于空按钮的 Y 坐标说明第一按钮在第二按 钮左边for ( i =y-10i =j。i- ) /判断第二按钮左侧直到第一按钮中间有没有按钮if ( grid x i!=0)k=0。break。else k=1oK=1 说明通过了第一次验证if ( k=1)lin ePass On e()。if ( yj) /如果第二个按钮的丫坐

40、标小于空按钮的 Y 坐标说明第一按钮在第二按钮右边for (i=y+1。iv=joi+ )/判断第二按钮左侧直到第一按钮中间有没有按钮 if ( grid x i !=0) k=0obreako else k=1oif ( k=1) linePassOne()o if ( y=j )linePassOne()o if ( k=2) if ( x0=x)remove()oif ( x0 x)for ( n=x0onx)for ( n=xO。n =x+1。n-)if ( grid n j !=O)k=O。break 。if (grid n j =O & n=x+1)remove()for

41、( i =O。 i i )for ( j =x-1 。 j =i 。 j - )if ( grid j y!=O)k=O。 break 。else k=1。 if ( k=1) rowPassOne() if ( xi ) for ( j =x+1。 j =i 。 j + )if ( grid j y!=O)k=O break 。else k=1。 if ( k=1)rowPassOne()if ( x=i )rowPassOne() 。if ( k=2)if ( y0=y)remove() 。if ( y0y)for ( n=yO。ny)for ( n=yO。 n=y+1 。 n-)if (

42、 grid i n!=O)k=O。break 。 if (grid i n=0 & n=y+1) remove() 。publicvoid linePassOne() if ( y0j )/ 第一按钮同行空按钮在左边for (i=y0-1。i=joi- ) /判断第一按钮同左侧空按钮之间有没按钮 if ( grid x0 i !=0) k=0obreako elsek=2o /K=2 说明通过了第二次验证 if ( y0j )/ 第一按钮同行空按钮在与第二按钮之间for ( i =y0+1oi i )for ( j =x0-1。j =i。j -)if ( grid j y0!=0)k=

43、0。break 。else k=2。 if ( x0i )for ( j =x0+1 。 j =i 。 j + )if ( grid j y0!=0)k=0。break 。elsek=2。 publicvoid actionPerformed(ActionEvent e) if (e.getSource()= newlyButton )int grid = newint 87 。 this . grid = grid 。randomBuild()。mainFrame.setVisible( false ) 。 pressInformation =false 。init()。if (e.getS

44、ource()= exitButton )System. exit (0) 。 /if(e.getSource()=resetButton) / reload() 。 for (int cols=0 。cols6 。 cols+) for (int rows=0。rows y2 或者 x1=x2 且 y1x2 或者 y1=y2 且 x1x2,如下图所示:Oi图 4.5 同列*两个相同的图像块是相对的,记一个图像在另一个图像的右下角,即:x1x2且 y1x2 且 y1y2 两种情况。具体如下图所示:图 4.6 对角的*两个相同的图像块是相对的,记一个图像在另一个图像的右下角,即:x1y2 或者

45、x1x2 且 y1y2 两种情况。具体如下图所示:图 4.7 左对角在上面的四种情况当中又包含了许多中可能。针对同行的两个相同的颜色的 图像块来说又可分为两种情况,即:在同一行相邻和同一行不相邻的情况,不相 临的情况下有可以分为两种,能消去的和不能消去的。同在一列的也是这样。至 于两个点之间存在折线的,也可以分为两种情况,一种是存在折线但是能够消除 掉这两个颜色相同的图像块,一种是不能消除的,本人在设计程序的时候针对不 同的情况分别进行了判断和设计。下面分别对程序的算法进行讨论。首先是判断在同一行中除起始点图像块以外到其他的图像块之间还有没有其 他的图像块。如果有函数返回 false,如果没有

46、函数返回 true。其逻辑图如下图 所示:图 4.8 IsLi nePicEmpty 逻辑图IsLinePicEmpty 方法主要是通过两个图像块的坐标来判断两个图像块之间是不是 还有其他的图像块,上面的函数实现了同在一行或一列的图像块的检测,下面的算法则实现了判 断一条直线上的两个点是不是可以联通的。算法逻辑跟上面IsLinePicEmpty 算法一样,即检查相同的行或列上的两个相同图像块是不是可以连通的,即:两个之 间是不是还有其他图像块,算法逻辑图如下图所示:Forii-lioieniil-PorT冃Igl牡叫X.I r I iidex:-fl4图 4.9 IsLin eCo nn ec

47、tion在连连看的连接算法中上面的程序解决了在同一行或同一列中的相同图像块的 检测,下面的算法则解决了在两个相同图像块之间存在一条折线的问题。算法的 具体的逻辑设计图图下图所示:上面算法的逻辑是先判断两个点之间的的两条连通路径之间除起始点外时候有其 他的图像块,如果没有就判断两个图像块之间的直线是否可通,如果可通函数返 回值为真,不可通函数返回值为假。4.2.3 JFreeChartJFreeChart 是一组功能强大、灵活易用的 Java 绘图 API,使用它可以生成,多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。它能够用在 Swing 和 Web等中制作自定义的图表或报表,并且得到

48、广泛的应用。本文将通过引领 读者学习在JFreeChart 中饼图、柱状图和曲线图的进阶应用,来达到熟练使用 JFreeChart 的目的。要使用 JFreeChart 也需要对 WEB 工程下的 web.xml 进行修 改:DisplayChart/servlet/DisplayChartChartViewer/servlet/ChartViewer第 5 章 结束语由于计算机的普及,网络游戏越来越受大家的欢迎,几乎每个拥有电脑的人 都会玩网络游戏,不同的人玩的游戏当然大不相同。现在网络上的小游戏越来丰 富,我们此次的课程设计就是现在网络上非常流行的连连看游戏。游戏“连连看”顾名思义就是找出

49、相关联的东西,这个连连看在网上基本是 用在小游戏中,就是找出相同的两样东西,在一定的规则之内可以做为相关联处 理。现在网络小游戏、网页游戏越来越受网民欢迎,除了玩的方法简单外,很多 游戏不乏经典。连连看游戏就是典型。不管走到哪个网页游戏网站,连连看游戏 总是排在受玩家欢迎排名的前 5 位,休闲、趣味、益智是连连看玩不厌的精华, 且不分男女老少、工薪白领,是一款适合大众的经典网络休闲小游戏。这次我们设计的游戏具有一般连连看的功能,玩法规则都与网络上的小游戏 相同。我们的游戏除了有退出,再来一局,计分,倒计时的功能外,在游戏开始 前,还有一个用户登录注册界面,用户需登录以后才能开始游戏。此次课程设

50、计的过程虽然辛苦,但也收获了不少东西。经过到图书馆以及网 络上查阅资料,我们在对已学的 Java 知识有了进一步的掌握,例如Swing 组件的使用,事件的处理等,另外,还了解了许多新的知识。经过小组成员的合作努力,我们对此游戏进行各种完善,从原来的数字图片改成了一些可爱复杂的图片,从没有计时功能到增加了计时功能,从没有登录界面到制作了一个登录界 面,从一次次的完善中,我们收获了很多。当然该游戏并不是完美的,还有一些 功能可以加强完善,这需要我们继续努力,进一步探究。致谢参考文献1 刘宝林.Java 程序设计与案例习题解答与实验指导M.2 王鹏何云峰.Swing 图形界面开发与案例分析M.3 (

51、美)Karl Avedal ,Danny Ayers,TimothyBriggs.JSP 编程指南M.电子工业出版 社,2004,47-125.4 (美)Mark Linsenbardt.JSP 在数据库中的应用与开发M.希望电子出版社,2005,210-236.5 Dianne Phelan, Building a simple web database applicationC.IEEE InternationalProfessional Communication Conference, 2004, 79-86.6 (美)Karl Avedal,Danny Ayers,Timothy B

52、riggs.JSP 编程指南M.电子工业出版社,2006,47-125.7 Dianne Phelan, Building a simple web database applicationC.IEEE InternationalProfessional Communication Conference, 2005, 79-86.8 Altendorf. Eric, Hohman. Moses, Zabicki. Roman. Using J2EE on alarge, webbasedprojectJ. IEEE Software.2002,19(02):81-89.附录 源代码import

53、 java.awt.BorderLayout。import java.awt.Checkbox。import java.awt.CheckboxGroup。import java.awt.Color。import java.awt.Container。import java.awt.FlowLayout 。import java.awt.Graphics。import java.awt.GridLayout 。import java.awt.event.ActionEvent。import java.awt.event.ActionListener。import java.io.File 。i

54、mport java.io.FilenameFilter 。import java.io.IOException 。import java.io.RandomAccessFile。import javax.swing.Box 。import javax.swing.Icon 。import javax.swing.ImageIcon。import javax.swing.JButton。import javax.swing.JDialog 。import javax.swing.JFrame。import javax.swing.JLabel。import javax.swing.JOptio

55、nPane。import javax.swing.JPanel。import javax.swing.JPasswordField。import javax.swing.JTextField。import javax.swing.Timer 。class MyPanel extends JPanel int cnt = 0 。public void paint(Graphics g) super.paint(g)。 g.setColor(Color.red)。g.fillRect(this.getWidth() - cnt, 0, cnt, this.getHeight() 。public b

56、oolean isEnd() if (cnt+ this.getWidth()return true。repaint()。return false。public class LianLianKan implements ActionListener JFrame mainFrame。 / 主面板JDialog login 。MyPanel time。Container thisContainer。JPa nel cen terPa nel, southPa nel, no rthPanel / 子面板JButton diamondsButton = new JButton65 。/ 游戏按钮数

57、组JButton exitButton, newlyButton 。 / 退出,重列,重新开始按钮JLabel fractionLable = new JLabel(0)。 / 分数标签JButton firstButton, secondButton。 / 分别记录两次被选中的按钮 Timer grid = new int87 。 / 储存游戏按钮位置static boolean pressInformation = false。 / 判断是否有按钮被选中int x0 = 0, y0 = 0, x = 0, y = 0, fristMsg = 0, secondMsg =

58、 0, validateLV 。 / 游戏按钮的位置坐标int i, j, k, n。/ 消除方法控制/ =/ = 调用图片=/ private static Icon icons =new ImageIcon6 * 5 。 private static final String imgDir = c:/img 。 / 这里填上图片目录全名 static try/ 发生异常的操作File dir = new File(imgDir) 。File imgFiles = dir.listFiles(new FilenameFilter() public booleanaccept(File dir

59、, String name) returnname.toLowerCase().endsWith(.jpg)。)。for (int i = 0。 i 10 * 10。 i+) iconsi = newImageIcon(imgFilesi.getAbsolutePath()。 catch (Exception e) e.printStackTrace()。/ 异常处理public void init() mainFrame = new JFrame(JKJ 连连看 )。 / 设置主面板的名称为 JKJ 连连看 mainFrame.setDefaultCloseOperation(JFrame.

60、EXIT_ON_CLOSE)。 / 结束窗体所在的应用程序thisContainer = mainFrame.getContentPane(。 ) / 调用 getContentPane()方法得到内容面板thisContainer.setLayout(new BorderLayout() 。/ 设 置 为 BorderLayout()布局centerPanel = new JPanel(。) / 设置面板 southPanel = new JPanel(。)northPanel = new JPanel(。) northPanel.setLayout(new BorderLayout()。thisContainer.ad

温馨提示

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

评论

0/150

提交评论