




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 淮 海 工 学 院 计算机工程学院课程设计报告设计名称: 面向对象课程设计 选题名称: 连连看游戏的设计与实现 姓 名: 学 号: 专业班级: 网络工程122 系 (院): 计算机工程学院 设计时间: 2014.3.122014.4.10 设计地点: 软件实验室、教室 成绩:指导教师评语: 签名: 年 月 日面向对象课程设计报告 第 17 页,共 17 页1课程设计目的面向对象程序设计是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法
2、,提高运用面向对象知识分析实际问题、解决实际问题的能力。2课程设计任务与要求:课程设计可选用NetBeans、Eclipse、JBuilder等作为开发平台以提高开发效率,尽可能熟练掌握其中一种集成开发环境。建议采用UML建模技术进行系统的分析设计,在Visio中画出系统用例图和类图,并将UML图复制到设计报告中。通过这次设计,要求掌握以下内容:1) 面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用2) 类、包、接口的定义与使用3) 常用工具类与算法的实现(数组、向量、字符串、链表)4) Java常用标准GUI组件及其事件处理5) Java的异常处理机制6) Java的数据库连接
3、技术7) Java的多线程技术与动画制作8) Java的网络编程连连看游戏的设计与实现设计一个连连看小游戏的功能的java程序,包括以下功能:(1) 设计主页面功能的实现,按简单,中等,高难等级,调入图片,图片必须是双数,等级实现图片的排版;(2) 设计刷新,开始按钮,按直线,一个转角,两个转角相连,消去可以连接的图片,(3) 设计时间漏斗计算时间,超过时间,游戏结束,未到时间,进入下一关;以及自动调动关数,游戏分数的叠加;3课程设计说明书直线1 概要设计图片消去(1)用例图一拐角两拐角简单难易选择中等 用户难度时间计时漏斗分数累加(2)游戏结构图难度选择游戏关于开始开始演示判断是否满足要求否
4、是消除图片刷新提示全部消除游戏结束(3)游戏详细流程 开始 继续游戏两图片相同 消去时间>=0图片消完进入下一关 结束 失败 Y NY(4)练练看游戏的设计与实现概述 1.设计主页面功能的实现,游戏采用美女连连看的方式,界面美观友好,用户使用灵活、方便、快捷、准确,数据存储安全可靠,图片的消除、排列清晰。 2.按简单,中等,高难等级,调入图片,图片必须是双数,等级实现图片的排版; 3.设计刷新,开始按钮,按直线,一个转角,两个转角相连,消去可以连接的图片 4 .设计时间漏斗计算时间,超过时间,游戏结束,未到时间,进入下一关;以及自动调动关数,可方便快捷地进行下一盘游戏,并且两盘的分数在规
5、定的时间内会叠加起来,游戏分数的叠加,计分自动完成,提高工作效率。 5.本设计采用单机模式,当在规定的时间内消完全部的图片则当前关卡通过,如果在规定的时间内没能消完所有的图片则游戏结束,重新开始新游戏。游戏规则是模仿普通的连连看游戏,主要是鼠标两次点击的图片能否消去的问题。当前,前提是点击两张相同的图片,若点击的是同一张图片或者两张不同的图片,则不予处理。在两张想同图片用三根以内的直线能连在一起,就可以消去;否则,不予处理。二详细设计3.1游戏功能q 游戏采用美女连连看的方式,界面美观友好,用户使用灵活、方便、快捷、准确,数据存储安全可靠。q 设置开始.刷新两个按钮q 游戏分为简单,中等,高难
6、,三个等级,每个等级有各自的关数。q 用漏斗来表现用掉的时间,提示时间用完,游戏结束。q 图片的消除、排列清晰。q 计分自动完成,提高工作效率。q 可方便快捷地进行下一盘游戏,并且两盘的分数在规定的时间内会叠加起来。q 操作员可以随时退出游戏。q 对用户输入的信息,系统进行严格的信息检验,尽可能排除人为的错误。q 系统最大限度地实现了易维护性和易操作性。q 系统运行稳定、安全可靠。3.2游戏规则1、 条件: 程序的关键在于判断用户连续点击的两个图案能否消除。两个图片可以消除的条件有两个: 图片相同 图片间连线的转角数不得超过2个。2.具体操作: 第一次使用鼠标点击游戏界面中的牌,该牌此时为&q
7、uot;被选中",以特殊方式显示;再次以鼠标点击其他牌,若该牌与被选中的牌图案相同,且把第一个牌到第二个牌连起来,中间的直线不超过 3 根,则消掉这一对牌,否则第一个牌恢复成未被选中状态,而第二个牌变成被选中状态。在规定的时间内将游戏界面上的牌全部消除掉。则游戏胜利 ,在规定时间,界面上的牌仍未全部消掉。则游戏失败.根据转角数不得超过2个的规则,我们可以分为转角数分别为0个、1个、2个这三种情况分别讨论。(1)0转角连通(直线连通):两个图片的纵坐标或横坐标相等,且两者连线间没有其他图案阻隔。 (2)一个转角连通:其实相当于两个图片的横向与纵向的直线相交只有一个焦点。 图4.4.2一
8、个转角连通 (3)两个转角连通: 判断图片A与图片B能否经过有两个转角的路径连通实质上可以转化为判断能否找到一个点C,这个C点与A可以直线连通,且C与B可以通过有两个转角的路径连通。若能找到这样一个C点,那么A与B就可以经过有两个转角的路径连通 。 判断是否经两个转角连通的算法需要做两个方向上的扫描:水平扫描和垂直扫描。 水平判断。如下图所示,为了判断A,B能否通过2个转角连通,则从A开始在水平方向上向左右扫描,并判断经过的点能否与B点经过1个转角连通。显然C点能与B点经1个转角连通,故A,B能经2个转角连通。 垂直判断。如下图所示,为了判断A,B能否通过2个转角连通,则从A开始在垂直方向上下
9、扫描,并判断经过的点能否与B点经过1个转角连通。显然C点能与B点经1个转角连通,故A,B能经2个转角连通。3.3游戏模块 游戏思路 获取图片: 最基本的就是用button代替图片进行布局了,然后将图片set到button用来做背景图片。这里采用最简单的方法数组。考虑到图片是多行多列的格式。所以采用二维数组(数组名为game_grid方式来控制比较直观,并且为了程序容易解读,统一在不同过程中用名为i和j的变量来分别表示行列。程序开始时给数组中的各个元素赋初值为0,即表示没有图片。 然后数组控制整个游戏区域,游戏区域最外围为空白区域,即相关元素的值为0。这样就可以保证游戏刚开始后,第二层显示的图片
10、之间的相连路径处理时就没有阻碍了。 这个游戏考虑到玩家对图片的爱好不同,故可以自由修改。将数组game_grid的数据与图片名匹配(如:game_grid的数据为125则图片名为1,2.25与之一一对应),玩家则只需要将自己喜欢的图片改变图片名字去替换就可以了。其button背景图片的方法是用ImageIcon来存储图片信息然后set到button中。3.4游戏类的实现JFrame lianliankan Lianliankan()lianliankanJPanelpublic lianliankanJPanel()public void paintComponent(Graphics g)p
11、ublic void chongzai() public void newGame() public void guoguan() public void newMap() public boolean linecheck(int y1,int x1,int y2,int x2)public boolean zhejiaocheck(int y1,int x1,int y2,int x2)public boolean liangcizhejiaocheck(int y1,int x1,int y2,int x2)public boolean ifcanTouch(int y1,int x1,i
12、nt y2,int x2) public void clearBlock() public void actionPerformed(ActionEvent e)Public void itemStateChanged(ItemEvent e) JPanelloudoupublic loudou()public void setdijiguan(int x)public void paintComponent(Graphics g) public void setTimes(int x)public int getTimes()public void run()4课程设计成果4.1游戏界面4.
13、2等级选择界面及代码public void itemStateChanged(ItemEvent e) /选择难度if(e.getSource()=difficultChoice)String selected = difficultChoice.getSelectedItem();if(selected="简单")fruitKinds=8;newGame();repaint();else if(selected="中等")fruitKinds=12;newGame();repaint();else if(selected="高难")
14、fruitKinds=16;newGame();repaint();repaint();public boolean linecheck(int y1,int x1,int y2,int x2) /判断是否在一条直线上if(y1=y2)if(x2>x1)int j=0;for(int i=0;i<x2-x1-1;i+)if(mapy1x1+i+1>0)j+;if(j=0)return true;if(x1>x2)int j=0;for(int i=0;i<x1-x2-1;i+)if(mapy1x2+i+1>0)j+;if(j=0)return true;4.
15、3消去相同图片及代码实现public boolean zhejiaocheck(int y1,int x1,int y2,int x2) /判断能否折角相连if(linecheck(y1,x1,y2,x1)&&linecheck(y2,x1,y2,x2)&&mapy2x1=0)return true;if(linecheck(y1,x1,y1, x2)&&linecheck(y1,x2,y2,x2)&&mapy1x2=0) /一条线上return true;return false;/判断能否两次折角相连public boolea
16、n liangcizhejiaocheck(int y1,int x1,int y2,int x2) /判断能否两次折角相连for(int i=0;i<9;i+)if(x2+1+i<10&&mapy2x2+1+i=0&&linecheck(y2, x2, y2, x2+1+i)if(zhejiaocheck(y1, x1, y2, x2+1+i)return true;if(x2-1-i>=0&&mapy2x2-1-i=0&&linecheck(y2, x2, y2, x2-1-i)if(zhejiaocheck
17、(y1, x1, y2, x2-1-i)return true;if(y2+1+i<10&&mapy2+1+ix2=0&&linecheck(y2, x2, y2+1+i, x2)if(zhejiaocheck(y1, x1, y2+1+i, x2)return true;if(y2-1-i>=0&&mapy2-1-ix2=0&&linecheck(y2, x2, y2-1-i, x2)if(zhejiaocheck(y1, x1, y2-1-i, x2)return true;return false;4.4重新开始
18、游戏public void newGame() /重新开始游戏for(int i=0;i<10;i+)for(int j=0;j<10;j+)BlockButtonji.setEnabled(true);int map=new int1010;this.map=map;newMap();ld.setTimes(0);score=0;guanshu=0;ld.setdijiguan(guanshu);代码实现如下:4.5游戏结束提示界面及代码public void run()while(dijiguan<20)if(remainTimes=0)overJLabel.setTex
19、t(" START !");if(remainTimes=80)overJLabel.setText("TIME'S UP!");JOptionPane.showMessageDialog(null,"游戏结束");remainTimes+;repaint();游戏结束代码try if(dijiguan<6)Thread.sleep(1200-dijiguan*100);if(dijiguan>=6&&dijiguan<=8)Thread.sleep(700-(dijiguan-5)*50);if(dijiguan>8)Thread.sleep(550-(dijiguan-8)*20);catch (InterruptedException e)e.prin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论