java课程设计报告书
- 格式:docx
- 大小:145.54 KB
- 文档页数:18
《Java程序设计》课程设计报告
2015—2016学年第二学期
设计题目:《数字连连看》
学生: _________ 黄杰____________
学号:」________________
专业班级:软件工程1402
指导教师: ________ 国权____________
2016年7 月2日
目录
1. JAVA程序设计书3
1.1《简易连连看》3
1.1.1具体要求3
1.2本系统设计的知识点3
2. 功能设计3
2.1算法设计3
2.2部分模块流程图4
3. 代码设计5
4. 界面及运行效果,测试工具与测试效果
14 5. 设计总结16
5.1. 程序调试情况:16
5.2. 本人在程序设计中感想:16
6. 致16
主要参考文献16
I.IJava程序课程设计任务书
1.1《简易连连看游戏》
本程序基本实现了小游戏连连看的功能,玩家找出游戏中2个相同图案的方块,
如果它们之间的连接线不多于3根直线,则将其连接起来,就可以成功将图案相同的方块消除,否则不会消失,当游戏中已没有满足条件的图案时,点击重列,可重新排序,游戏结束会跳出所得分数,该游戏的特点是与自己竞争,超过自己之前所创纪录。
1.1.1具体要求(包括技术要求等):
<1>.该游戏界面为方格类型,由纵6横7的直线平行垂直交叉组成,分别是6 行5列方块拼接,共有30格小方块。方块上随机分布一些数字,数字的要至少两两相同,位置随机打乱。
<2>.当将相同数字的方块连接,但要满足只能至少单边无阻碍呈直线趋势连接,否则无效,若连接一对成功就消失于界面,继续游戏,直到游戏结束,并能返回所得分数。
<3>.重列按钮(帮助)的功能:游戏过程中,遇到困难难以寻找下一符合要求的一对数字,可按左下按钮重置重新排列方可继续游戏。
<4>.退出按钮:击左下方的“退出游戏”按钮,即可结束游戏。
1.2本系统涉及的知识点:
循环,javaGUI组件,函数,数组,分支等
2.功能设计
2.1算法设计
本系统需要实现的功能要求:
数字按钮:
1.设计填有数字的按钮
2.设计放按钮的界面
图一,数字按钮功能模块
重列,结束,再来一局:
1•对数据重新排列
2•结束游戏
图二,三个功能按钮模块
数据记录:
输出完成游戏所得分数
图三,数据记录模块
鼠标操作
1.操作数字之间的连接
2.对已成功配对的进行消除
图四,鼠标操作模块2.2部分模块流程图:
设
计
填
有
数
字
的
按
钮
3代码设计
package mybase.programe;
/*
* lia nl ia nka n 总体算法思路:由两个确定的按钮。若这两个按钮的数字相等,就开始找它们相
连的路经。这个找路经
*分3种情况:(从下面的这三种情况,我们可以知道,需要三个检测,这三个检测分别检测一条直路经。这样就会有
*三条路经。若这三条路经上都是空按钮,那么就刚好是三种直线(两个转弯点)把两个按钮连
接起来了)
* 1.相邻
*
* 2.若不相邻的先在第一个按钮的同行找一个空按钮。1).找到后看第二个按钮横向到这个空按
钮
*所在的列是否有按钮。2).没有的话再看第一个按钮到与它同行的那个空按钮之间是否有按钮。
3).没有的话,再从
*与第一个按钮同行的那个空按钮竖向到与第二个按钮的同行看是否有按钮。没有的话路经就通了,可以消了.
*
* 3.若2失败后,再在第一个按钮的同列找一个空按钮。1).找到后看第二个按钮竖向到这个空按
钮所在的行是否有按钮。
* 2).没有的话,再看第一个按钮到与它同列的那个空按钮之间是否有按钮。3).没有的话,再从
与第一个按钮同列的
*那个空按钮横向到与第二个按钮同列看是否有按钮。没有的话路经就通了,可以消了*若以上三步都失败,说明这两个按钮不可以消去。
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class LianLianKan implements ActionListener {
JFrame mainFrame; // 主面板
Container thisC on tai ner
JPanel centerPanel , southPanel , northPanel ; // 子面板
JButton diamondsButton [][] = new JButton[6][5]; // 游戏按钮数组
JButton exitButton ,resetButton , newlyButton ; // 退岀,重列,重新开始按钮
JLabel fractionLable = new JLabel( "0"); // 实例化分数标签,并初始化为"0”
JButton firstButton , secondButton ; //分别记录两次被选中的按钮
(这里其实只要6行,5列。但是我们用了8行,7列。是等于在这个面板按钮
//储存游戏按钮位置
的周围还围
// 了一层是0的按钮,这样就可以实现靠近面板边缘的两个按钮可以消去)
int grid [][] = new int [8][7];
static boolea n press In formati on = false ; // 判断是否有按钮被选中
int x0 = 0, y0 = 0, x = 0, y = 0, fristMsg = 0, secondMsg = 0, validateLV ; // 游戏按
钮的位置坐标
int i , j , k, n;//消除方法控制
public void init()
{
mainFrame = newJFrame( "JKJ 连连看”);// 实例化
thisContainer = mainFrame.getContentPane(); // 将thisContainer 放入mainFrame的容窗口中thisContainer .setLayout( new BorderLayout()); // 为thisContainer 仓U建Borderlayout 布局管理器centerPanel = new JPanel(); // 实例化
southPanel = new JPanel(); // 实例化
northPanel = new JPanel(); // 实例化
thisCo nta in er .add( cen terPa nel , "Ce nter" ); // 以下三行是为thisCo nta in er 容器添加不同方
位的新的面板组件
thisContainer .add( southPanel , "South");
thisContainer .add( northPanel , "North");
centerPanel .setLayout( new GridLayout(6, 5)); // 为centerPanel 面板设置网格式布局管理器
(6行5列)的容纳组建的网格
for ( int cols = 0; cols < 6; cols ++) {
for ( int rows = 0; rows < 5; rows ++) {
diamondsButton [cols ][ rows] = new JButton(String. valueOf (grid [cols + 1][ rows + 1])); //
将数组的行数与列数各自加一后对应元素转化为字符串类型并赋值给对应的原始数组按钮
diamondsButton [cols ][ rows].addActionListener( this ); // 为每个网格单元设置事件监听接口