当前位置:文档之家› java连连看

java连连看

计算机学院 《面向对象程序设计》课程设计报告《面向对象程序设计》课程设计报告题目: 连连看游戏设计专业: 网络工程班级: 15(2)班姓名: 卢山指导教师: 杨星成绩:计算机学院2017年5月18日2016-2017学年 第2学期目录1设计内容及要求 (3)1.1设计内容 (3)1.2设计要求 (3)2概要设计 (4)2.1功能目标 (4)2.2游戏规则 (4)3 具体设计与实 (5)3.1界面设计与实现 (5)3.2程序算法设计 (7)4 运行结果界面 (10)5 结束语 (12)6 参考文献 (13)附源程序: (13)1设计内容及要求1.1设计内容游戏规则是模仿网络上普通的连连看游戏,主要是鼠标两次点击的图片能否消去的问题。

当前,前提是点击两张相同的图片,若点击的是同一张图片或者两张不同的图片,则不予处理。

在两张想同图片所能连通的所有路径中,如果存在一条转弯点不多于两个的路径,就可以消去;如果没有,则不予处理。

1.2设计要求1)系统采用图片连连看的方式,界面美观友好,用户使用灵活、方便。

2)实现用户登录注册功能。

3)图片的消除、排列清晰。

4)计分自动完成,提高工作效率。

5)用进度条来表现用掉的时间。

6)实现多条件查询。

7)可方便快捷地进行下一盘游戏,并且两盘的分数在规定的时间内会叠加起来。

8)操作员可以随时退出游戏。

9)对用户输入的信息,系统进行严格的信息检验,尽可能排除人为的错误。

10)系统最大限度地实现了易维护性和易操作性。

11)系统运行稳定、安全可靠。

2概要设计2.1功能目标1)该游戏开始前,将设置一个用户登录注册界面,如果没有注册的玩家在按下“注册”按钮后将进入注册界面,玩家需要填写用户名,密码,性别等信息完成注册,再进入登录界面,输入用户名和密码按下“确定”后就将进入游戏界面,开始游戏。

2)游戏中将有“退出”功能,选择退出命令后程序将终止执行,关闭窗口。

还将有“再来一局”功能,选择再来一局命令后程序将对图片重新排列,重新开始游戏。

该游戏还有一个时间倒计时的进度条,提醒玩家剩余的时间,增加游戏的难度。

在界面的顶部有计分功能,当玩家消去图片后就会赢得相应的分数。

2.2游戏规则玩家可以将2 个相同图案的对子连接起来,连接线不多于3 根直线,就可以成功将对子消除。

操作:第一次使用鼠标点击棋盘中的棋子,该棋子此时为“被选中”,以特殊方式显示;再次以鼠标点击其他棋子,若该棋子与被选中的棋子图案相同,且把第一个棋子到第二个棋子连起来,中间的直线不超过 3 根,则消掉这一对棋子,否则第一颗棋子恢复成未被选中状态,而第二颗棋子变成被选中状态。

3 具体设计与实3.1界面设计与实现图1 用户登录模块框图此函数的作用是创建登录界面,检测用户登陆的合法性,并确认用户输入了合法的登录名和口令。

部分代码:public void loginDialog() {//设置登录界面timer = new Timer(100, this);//创建时间对象***倒计时时间100秒login = new JDialog();//创建对象login.setTitle("登录");//在文本框中写入名字login.setLayout(new FlowLayout());//添加流布局login.add(new JLabel("用户名:"));//添加标签final JTextField name = new JTextField(10);//设置文本框长度login.add(name);login.add(new JLabel("密码:"));//添加标签final JPasswordField password = new JPasswordField(10); //设置文本框长度password.setEchoChar('*');//密码以*返回login.add(password);JButton confirm = new JButton("登录");//添加按钮confirm.addActionListener(new ActionListener() {//设置一个监视器public void actionPerformed(ActionEvent e) {if (compareUserData(name.getText().trim(),new String(password.getPassword()))) {login.setVisible(false);init();timer.start();} else {JOptionPane.showMessageDialog(login, "用户名或密码错误!", "错误提示",JOptionPane.ERROR_MESSAGE);}}});login.add(confirm);final JDialog regDialog = new JDialog(login, "注册", true);registerDialog(regDialog);JButton register = new JButton("注册");//添加按钮register.addActionListener(new ActionListener() {//设置一个监视器public void actionPerformed(ActionEvent e) {regDialog.setVisible(true);}});login.add(register);//添加组件login.setSize(400, 200);//设置登录界面的尺寸login.setResizable(false);login.setLocationRelativeTo(null);login.setVisible(true);//窗口可见}private boolean compareUserData(String name, String password) { //异常处理try {RandomAccessFile out = new RandomAccessFile("user.dat", "rw");String fname, fpassword = null;while (out.getFilePointer() < out.length()) {fname = out.readUTF();out.readUTF();fpassword = out.readUTF();if (fname.equals(name) && fpassword.equals(password))return true;}out.close();} catch (IOException e) {e.printStackTrace();}return false;}3.2程序算法设计连连看游戏中对于用户来说最简单的呈现就是单击两个连在一起的的相同的图像时这两个图像就会消去。

即使不是紧邻的两个相同的图像块消去时也不能超过两次转弯。

连连看游戏的联通算法一般包括回溯法和堆栈实现的迷宫算法。

在本次开发的连连看中两个图像块可以消去的情况分为以下几种情况。

设第一个图像块的横坐标为x1,纵坐标为y1,第二个图像块的横坐标为x2,纵坐标为y2.两个图像块在在统一行上面,即x1=x2且y1>y2或者x1=x2且y1<y2,如下图所示:图2 同行两个图像块在同一列,即y1=y2且x1>x2或者y1=y2且x1<x2,如下图所示:图3 同列两个相同的图像块是相对的,记一个图像在另一个图像的右下角,即:x1<x2且y1<y2或者x1>x2且y1>y2两种情况。

具体如下图所示:图4 对角的两个相同的图像块是相对的,记一个图像在另一个图像的右下角,即:x1<x2且y1>y2或者x1>x2且y1<y2两种情况。

具体如下图所示:图5 左对角在上面的四种情况当中又包含了许多中可能。

针对同行的两个相同的颜色的图像块来说又可分为两种情况,即:在同一行相邻和同一行不相邻的情况,不相临的情况下有可以分为两种,能消去的和不能消去的。

同在一列的也是这样。

至于两个点之间存在折线的,也可以分为两种情况,一种是存在折线但是能够消除掉这两个颜色相同的图像块,一种是不能消除的,本人在设计程序的时候针对不同的情况分别进行了判断和设计。

下面分别对程序的算法进行讨论。

首先是判断在同一行中除起始点图像块以外到其他的图像块之间还有没有其他的图像块。

如果有函数返回false,如果没有函数返回true。

IsLinePicEmpty方法主要是通过两个图像块的坐标来判断两个图像块之间是不是还有其他的图像块,(此处不分行)上面的函数实现了同在一行或一列的图像块的检测,下面的算法则实现了判断一条直线上的两个点是不是可以联通的。

算法逻辑跟上面IsLinePicEmpty算法一样,即检查相同的行或列上的两个相同图像块是不是可以连通的,即:两个之间是不是还有其他图像块。

在连连看的连接算法中上面的程序解决了在同一行或同一列中的相同图像块的检测,下面的算法则解决了在两个相同图像块之间存在一条折线的问题。

上面算法的逻辑是先判断两个点之间的的两条连通路径之间除起始点外时候有其他的图像块,如果没有就判断两个图像块之间的直线是否可通,如果可通函数返回值为真,不可通函数返回值为假。

4 运行结果界面图9 登录界面图10 注册界面图11 主界面图12 时间到界面5 结束语由于计算机的普及,网络游戏越来越受大家的欢迎,几乎每个拥有电脑的人都会玩网络游戏,不同的人玩的游戏当然大不相同。

现在网络上的小游戏越来丰富,我们此次的课程设计就是现在网络上非常流行的连连看游戏。

游戏“连连看”顾名思义就是找出相关联的东西,这个连连看在网上基本是用在小游戏中,就是找出相同的两样东西,在一定的规则之内可以做为相关联处理。

现在网络小游戏、网页游戏越来越受网民欢迎,除了玩的方法简单外,很多游戏不乏经典。

连连看游戏就是典型。

不管走到哪个网页游戏网站,连连看游戏总是排在受玩家欢迎排名的前5位,休闲、趣味、益智是连连看玩不厌的精华,且不分男女老少、工薪白领,是一款适合大众的经典网络休闲小游戏。

这次我们设计的游戏具有一般连连看的功能,玩法规则都与网络上的小游戏相同。

我们的游戏除了有退出,再来一局,计分,倒计时的功能外,在游戏有一个用户登录注册界面,用户需登录以后才能开始游戏。

相关主题