连连看游戏的设计与实现
3.课程设计说明书
面向对象课程设计报告 一.概要设计 (1)用例图
第
3
直线
页,共
17
页
图片消去 一拐角
两拐角 难易选择 简单 中等 时间计时 难度
用户
漏斗 分数累加
(2)游戏结构图
开始
难度选择 游戏 关于
开 始 否
演 示
判 断 是 否 是满 足 要求
刷新 全部消除 消除图片 提示 游戏结束
(3)游戏详细流程
面向对象课程设计报告
第
12
页,共
17
页
public boolean zhejiaocheck(int y1,int x1,int y2,int x2) //判断能否折角相连 { if(linecheck(y1,x1,y2,x1)&&linecheck(y2,x1,y2,x2)&&map[y2][x1]==0) { return true; } if(linecheck(y1,x1,y1, x2)&&linecheck(y1,x2,y2,x2)&&map[y1][x2]==0) //一条线上 { return true; } return false; } //判断能否两次折角相连 public boolean liangcizhejiaocheck(int y1,int x1,int y2,int x2) //判断能否两次折角相连 { for(int i=0;i<9;i++) { if(x2+1+i<10&&map[y2][x2+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&&map[y2][x2-1-i]==0&&linecheck(y2, x2, y2, x2-1-i)) { if(zhejiaocheck(y1, x1, y2, x2-1-i)) return true; } if(y2+1+i<10&&map[y2+1+i][x2]==0&&linecheck(y2, x2, y2+1+i, x2)) { if(zhejiaocheck(y1, x1, y2+1+i, x2)) return true; } if(y2-1-i>=0&&map[y2-1-i][x2]==0&&linecheck(y2, x2, y2-1-i, x2)) { if(zhejiaocheck(y1, x1, y2-1-i, x2)) return true; } } return false; }
面向对象课程设计报告 第 5 页,共 17 页 3.设计刷新,开始按钮,按直线,一个转角,两个转角相连,消去可以连接的图片 4 .设计时间漏斗计算时间,超过时间,游戏结束,未到时间,进入下一关;以及自 动调动关数,可方便快捷地进行下一盘游戏,并且两盘的分数在规定的时间内会叠加起 来,游戏分数的叠加,计分自动完成,提高工作效率。 5.本设计采用单机模式,当在规定的时间内消完全部的图片则当前关卡通过,如果 在规定的时间内没能消完所有的图片则游戏结束,重新开始新游戏。游戏规则是模仿普 通的连连看游戏,主要是鼠标两次点击的图片能否消去的问题。当前,前提是点击两张 相同的图片,若点击的是同一张图片或者两张不同的图片,则不予处理。在两张想同图 片用三根以内的直线能连在一起,就可以消去;否则,不予处理。 二.详细设计 3.1 游戏功能
4.课程设计成果
面向对象课程设计报告 4.1 游戏界面
第
9
页,共
17
页
4.2 等级选择界面及代码
面向对象课程设计报告
第
10
页,共
17
页
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=="高难") { fruitKinds=16; newGame(); repaint(); } } } }
面向对象课程设计报告
第
2
页,共
17
页
1.课程设计目的
《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习 完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对 象程序设计的理论、方法和基础知识的理解,掌握使用 Java 语言进行面向对象设计 的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力。
游戏采用美女连连看的方式,界面美观友好,用户使用灵活、方便、快
捷、准确,数据存储安全可靠。
设置开始.刷新两个按钮 游戏分为简单,中等,高难,三个等级,每个等级有各自的关数。 用漏斗来表现用掉的时间,提示时间用完,游戏结束。 图片的消除、排列清晰。 计分自动完成,提高工作效率。 可方便快捷地进行下一盘游戏,并且两盘的分数在规定的时间内会叠加
面向对象课程设计报告
第
7
页,共
17
页
垂直判断。如下图所示,为了判断 A,B 能否通过2个转角连通,则从 A 开始在垂直方 向上下扫描,并判断经过的点能否与 B 点经过1个转角连通。显然 C 点能与 B 点经1个转 角连通,故 A,B 能经2个转角连通。 3.3 游戏模块 游戏思路 获取图片: 最基本的就是用 button 代替图片进行布局了,然后将图片 set 到 button 用来做 背景图片。这里采用最简单的方法——数组。考虑到图片是多行多列的格式。所以采用 二维数组(数组名为 game_grid[][]方式来控制比较直观,并且为了程序容易解读,统 一在不同过程中用名为 i 和 j 的变量来分别表示行列。程序开始时给数组中的各个元素 赋初值为 0,即表示没有图片。 然后数组控制整个游戏区域,游戏区域最外围为空白区域,即相关元素的值为 0。 这样就可以保证游戏刚开始后, 第二层显示的图片之间的相连路径处理时就没有阻碍了。 这个游戏考虑到玩家对图片的爱好不同,故可以自由修改。将数组 game_grid 的数据与图片名匹配 (如: game_grid 的数据为 1~25 则图片名为 1, 2...25 与之一一对应) , 玩家则只需要将自己喜欢的图片改变图片名字去替换就可以了。 其 button 背景图片的方法是用 ImageIcon 来存储图片信息然后 set 到 button 中。 3.4 游戏类的实现 JFrame lianliankan
loudou public loudou() public void setdijiguan(int x) public void paintComponent(Graphics g) public void setTimes(int x) public int getTimes() public void run()
淮 海 工 学 院 计算机工程学院
课程设计报告
设计名称: 选题名称: 姓 名: 面向对象课程设计 连连看游戏的设计与实现 学 号:
专业班级: 系 (院) : 设计时间: 设计地点:
网络工程 122 计算机工程学院 2014.3.12~2014.4.10 软件实验室、教室
指导教师评语:
成绩:
签名:
年 月 日
起来。
操作员可以随时退出游戏。 对用户输入的信息, 系统进行严格的信息检验, 尽可能排除人为的错误。 系统最大限度地实现了易维护性和易操作性。
系统运行稳定、安全可靠。
3.2 游戏规则 1、条件: 程序的关键在于判断用户连续点击的两个图案能否消除。两个图片可以消除的条件 有两个: ▍图片相同 ▍图片间连线的转角数不得超过 2 个。 2.具体操作: 第一次使用鼠标点击游戏界面中的牌,该牌此时为"被选中",以特殊方式显示;再
面向对象课程设计报告
repaint(); } } } }
第
11
页,共
17
页
4.3 消去相同图片及代码实现
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(map[y1][x1+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(map[y1][x2+i+1]>0) j++; } if(j==0) return true; } } //判断是否在一条直线上
面向对象课程设计报告
第
4
页,共
17
页
开始
继续游戏 Y
两图片相同
消去
时间>=0