java课程设计.docx

上传人:b****1 文档编号:445714 上传时间:2022-10-10 格式:DOCX 页数:19 大小:164.66KB
下载 相关 举报
java课程设计.docx_第1页
第1页 / 共19页
java课程设计.docx_第2页
第2页 / 共19页
java课程设计.docx_第3页
第3页 / 共19页
java课程设计.docx_第4页
第4页 / 共19页
java课程设计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

java课程设计.docx

《java课程设计.docx》由会员分享,可在线阅读,更多相关《java课程设计.docx(19页珍藏版)》请在冰豆网上搜索。

java课程设计.docx

java课程设计

《Java程序设计》课程设计报告

2015—2016学年第二学期

 

设计题目:

《数字连连看》

*************************

学号:

************

专业班级:

软件工程1402

************************

2016年7月2日

 

1.1Java程序课程设计任务书

1.1《简易连连看游戏》

本程序基本实现了小游戏连连看的功能,玩家找出游戏中2个相同图案的方块,如果它们之间的连接线不多于3根直线,则将其连接起来,就可以成功将图案相同的方块消除,否则不会消失,当游戏中已没有满足条件的图案时,点击重列,可重新排序,游戏结束会跳出所得分数,该游戏的特点是与自己竞争,超过自己之前所创纪录。

1.1.1具体要求(包括技术要求等):

<1>.该游戏界面为方格类型,由纵6横7的直线平行垂直交叉组成,分别是6行5列方块拼接,共有30格小方块。

方块上随机分布一些数字,数字的要求是至少两两相同,位置随机打乱。

<2>.当将相同数字的方块连接,但要满足只能至少单边无阻碍呈直线趋势连接,否则无效,若连接一对成功就消失于界面,继续游戏,直到游戏结束,并能返回所得分数。

<3>.重列按钮(帮助)的功能:

游戏过程中,遇到困难难以寻找下一符合要求的一对数字,可按左下按钮重置重新排列方可继续游戏。

<4>.退出按钮:

击左下方的“退出游戏”按钮,即可结束游戏。

1.2本系统涉及的知识点:

循环,javaGUI组件,函数,数组,分支等

2.功能设计

2.1算法设计

本系统需要实现的功能要求:

 

图一,数字按钮功能模块

 

 

图二,三个功能按钮模块

 

图三,数据记录模块

 

图四,鼠标操作模块

2.2部分模块流程图:

 

 

3代码设计

packagemybase.programe;

/*

*lianliankan总体算法思路:

由两个确定的按钮。

若这两个按钮的数字相等,就开始找它们相连的路经。

这个找路经

*分3种情况:

(从下面的这三种情况,我们可以知道,需要三个检测,这三个检测分别检测一条直路经。

这样就会有

*三条路经。

若这三条路经上都是空按钮,那么就刚好是三种直线(两个转弯点)把两个按钮连接起来了)

*1.相邻

*

*2.若不相邻的先在第一个按钮的同行找一个空按钮。

1).找到后看第二个按钮横向到这个空按钮

*所在的列是否有按钮。

2).没有的话再看第一个按钮到与它同行的那个空按钮之间是否有按钮。

3).没有的话,再从

*与第一个按钮同行的那个空按钮竖向到与第二个按钮的同行看是否有按钮。

没有的话路经就通了,可以消了.

*

*3.若2失败后,再在第一个按钮的同列找一个空按钮。

1).找到后看第二个按钮竖向到这个空按钮所在的行是否有按钮。

*2).没有的话,再看第一个按钮到与它同列的那个空按钮之间是否有按钮。

3).没有的话,再从与第一个按钮同列的

*那个空按钮横向到与第二个按钮同列看是否有按钮。

没有的话路经就通了,可以消了。

*

*若以上三步都失败,说明这两个按钮不可以消去。

*/

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

publicclassLianLianKanimplementsActionListener{

JFramemainFrame;//主面板

ContainerthisContainer;

JPanelcenterPanel,southPanel,northPanel;//子面板

JButtondiamondsButton[][]=newJButton[6][5];//游戏按钮数组

JButtonexitButton,resetButton,newlyButton;//退出,重列,重新开始按钮

JLabelfractionLable=newJLabel("0");//实例化分数标签,并初始化为“0”

JButtonfirstButton,secondButton;//分别记录两次被选中的按钮

//储存游戏按钮位置(这里其实只要6行,5列。

但是我们用了8行,7列。

是等于在这个面板按钮的周围还围

//了一层是0的按钮,这样就可以实现靠近面板边缘的两个按钮可以消去)

intgrid[][]=newint[8][7];

staticbooleanpressInformation=false;//判断是否有按钮被选中

intx0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV;//游戏按钮的位置坐标

inti,j,k,n;//消除方法控制

publicvoidinit()

{

mainFrame=newJFrame("JKJ连连看");//实例化

thisContainer=mainFrame.getContentPane();//将thisContainer放入mainFrame的内容窗口中

thisContainer.setLayout(newBorderLayout());//为thisContainer创建Borderlayout布局管理器

centerPanel=newJPanel();//实例化

southPanel=newJPanel();//实例化

northPanel=newJPanel();//实例化

thisContainer.add(centerPanel,"Center");//以下三行是为thisContainer容器添加不同方位的新的面板组件

thisContainer.add(southPanel,"South");

thisContainer.add(northPanel,"North");

centerPanel.setLayout(newGridLayout(6,5));//为centerPanel面板设置网格式布局管理器(6行5列)的容纳组建的网格

for(intcols=0;cols<6;cols++){

for(introws=0;rows<5;rows++){

diamondsButton[cols][rows]=newJButton(String.valueOf(grid[cols+1][rows+1]));//将数组的行数与列数各自加一后对应元素转化为字符串类型并赋值给对应的原始数组按钮

diamondsButton[cols][rows].addActionListener(this);//为每个网格单元设置事件监听接口

centerPanel.add(diamondsButton[cols][rows]);

}

}

exitButton=newJButton("退出");//实例特定按钮并添加时间监听接口

exitButton.addActionListener(this);

resetButton=newJButton("重列");

resetButton.addActionListener(this);

newlyButton=newJButton("再来一局");

newlyButton.addActionListener(this);

southPanel.add(exitButton);//将三个特定接口添加到三个确定方位布局的面板组件容器中

southPanel.add(resetButton);

southPanel.add(newlyButton);

fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())));

//嵌套,把整形对象Integer转换成基本数据类型int(整数)再转化为字符串型。

 

northPanel.add(fractionLable);

mainFrame.setBounds(280,100,500,450);//设置主界面的大小

mainFrame.setVisible(true);//设置可见

mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

}//设置当点击后界面仍旧停留且不会退出进程

 

publicvoidrandomBuild(){//随机数

intrandoms,cols,rows;

for(inttwins=1;twins<=15;twins++){//一共15对button,30个button上的数字

randoms=(int)(Math.random()*25+1);//强制转换随机函数产生的数值,并进行必要运算避免“0”

for(intalike=1;alike<=2;alike++){

cols=(int)(Math.random()*6+1);//随机选取连连看中的单元网格

rows=(int)(Math.random()*5+1);

while(grid[cols][rows]!

=0){//等于0说明这个空格有了button

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

}

this.grid[cols][rows]=randoms;

}

}

}

 

publicvoidfraction(){

fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100));

}

 

publicvoidreload(){

intsave[]=newint[30];

intn=0,cols,rows;

intgrid[][]=newint[8][7];

for(inti=0;i<=6;i++){

for(intj=0;j<=5;j++){

if(this.grid[i][j]!

=0){

save[n]=this.grid[i][j];//记下每个button的数字

n++;//有几个没有消去的button

}

}

}

n=n-1;

this.grid=grid;

while(n>=0){//把没有消去的button重新放一次

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

while(grid[cols][rows]!

=0){

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

}

this.grid[cols][rows]=save[n];

n--;

}

mainFrame.setVisible(false);

pressInformation=false

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1