一份JAVA连连看课程设计.docx
- 文档编号:23397009
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:17
- 大小:60.12KB
一份JAVA连连看课程设计.docx
《一份JAVA连连看课程设计.docx》由会员分享,可在线阅读,更多相关《一份JAVA连连看课程设计.docx(17页珍藏版)》请在冰豆网上搜索。
一份JAVA连连看课程设计
JAVA课程设计报告
实验题目:
班级:
2010级计本班
小组成员:
成绩:
指导教师:
一、课题设计的目的:
1)进一步加深对Java语言的理解和掌握;将所学的JAVA知识运用于实践中。
2)课程设计将理论与实践相结合,提供了一个既动手又动脑,独立实践的机会,锻炼我们的分析解决实际问题的能力,提高学生适应实际,实践编程的能力;
3)熟练掌握JAVA语言中图形用户界面程序的编写;
4)大体了解怎样用JAVA来编写小游戏的,增强我们实践能力和创新精神的综合培养。
课题设计的意义:
近年来,Java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。
一个学期的时间来学习JAVA这门课,我感觉觉得还不错,因为我们不但学习了书上理论的东西,还安排了上机操作课。
我认为学习一门计算机语言必定离不开实践,只有通过实践我们才能体会到书本上体会不到的东西。
所以,我们不仅要认真学习课本理论知识,更重要的是要通过上机实践才能增强和巩固我的知识。
课程设计是培养我们综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是我们实践能力与创新精神的综合培养;在实践能力方面培养我们理论与实践相结合的作风,增强了我们将来在人才市场上的竞争力。
所以,对于我们初学者,首先利用课程设计这样的较小项目锻炼自己的科学研究精神和提高创新能力,是很有必要的。
可行性论证:
“连连看“游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。
我通过所学的JAVA,设计了一个操作简单、界面美观、功能较齐全的“连连看”游戏。
通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。
这个游戏是用图形界面实现的,通过编译解释后,出现一个图开界面。
界面是由若干个小方格组成的,每一个小方格里有一个数值,如果在一个边上有相同的数值,连续点击它们就会消失,同时界面上正上方的分数就会自动加分。
游戏还设有退出、重列、再来一局的功能,方便游戏操作。
课题总体设计方案:
1、题目分析
界面要求:
用图形界面实现,参考下图:
2、系统流程图
源程序:
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
publicclasslianliankanimplementsActionListener
{
JFramemainFrame;//主面板
ContainerthisContainer;
JPanelcenterPanel,southPanel,northPanel;//子面板
JButtondiamondsButton[][]=newJButton[6][5];//游戏按钮数组
JButtonexitButton,resetButton,newlyButton;//退出,重列,重新开始按钮
JLabelfractionLable=newJLabel("0");//分数标签
JButtonfirstButton,secondButton;//分别记录两次被选中的按钮
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.setLayout(newBorderLayout());
centerPanel=newJPanel();
southPanel=newJPanel();
northPanel=newJPanel();
thisContainer.add(centerPanel,"Center");
thisContainer.add(southPanel,"South");
thisContainer.add(northPanel,"North");
centerPanel.setLayout(newGridLayout(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())));
northPanel.add(fractionLable);
mainFrame.setBounds(280,100,500,450);
mainFrame.setVisible(true);
}
publicvoidrandomBuild(){
intrandoms,cols,rows;
for(inttwins=1;twins<=15;twins++){
randoms=(int)(Math.random()*25+1);
for(intalike=1;alike<=2;alike++){
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]=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];
n++;
}
}
}
n=n-1;
this.grid=grid;
while(n>=0){
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;//这里一定要将按钮点击信息归为初始
init();
for(inti=0;i<6;i++){
for(intj=0;j<5;j++){
if(grid[i+1][j+1]==0)
diamondsButton[i][j].setVisible(false);
}
}
}
publicvoidestimateEven(intplaceX,intplaceY,JButtonbz){
if(pressInformation==false){
x=placeX;
y=placeY;
secondMsg=grid[x][y];
secondButton=bz;
pressInformation=true;
}
else{
x0=x;
y0=y;
fristMsg=secondMsg;
firstButton=secondButton;
x=placeX;
y=placeY;
secondMsg=grid[x][y];
secondButton=bz;
if(fristMsg==secondMsg&&secondButton!
=firstButton){
xiao();
}
}
}
publicvoidxiao(){//相同的情况下能不能消去。
仔细分析,不一条条注释
if((x0==x&&(y0==y+1||y0==y-1))||((x0==x+1||x0==x-1)&&(y0==y))){//判断是否相邻
remove();
}
else{
for(j=0;j<7;j++){
if(grid[x0][j]==0){//判断第一个按钮同行哪个按钮为空
if(y>j){//如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边
for(i=y-1;i>=j;i--){//判断第二按钮左侧直到第一按钮中间有没有按钮
if(grid[x][i]!
=0){
k=0;
break;
}
else{k=1;}//K=1说明通过了第一次验证
}
if(k==1){
linePassOne();
}
}
if(y for(i=y+1;i<=j;i++){//判断第二按钮左侧直到第一按钮中间有没有按钮 if(grid[x][i]! =0){ k=0; break; } else{k=1;} } if(k==1){ linePassOne(); } } if(y==j){ linePassOne(); } } if(k==2){ if(x0==x){ remove(); } if(x0 for(n=x0;n<=x-1;n++){ if(grid[n][j]! =0){ k=0; break; } if(grid[n][j]==0&&n==x-1){ remove(); } } } if(x0>x){ for(n=x0;n>=x+1;n--){ if(grid[n][j]! =0){ k=0; break; } if(grid[n][j]==0&&n==x+1){ remove(); } } } } } for(i=0;i<8;i++){//列 if(grid[i][y0]==0){ if(x>i){ for(j=x-1;j>=i;j--){ if(grid[j][y]! =0){ k=0; break; } else{k=1;} } if(k==1){ rowPassOne(); } } if(x for(j=x+1;j<=i;j++){ if(grid[j][y]! =0){ k=0; break; } else{k=1;} } if(k==1){ rowPassOne(); } } if(x==i){ rowPassOne(); } } if(k==2){ if(y0==y){ remove(); } if(y0 for(n=y0;n<=y-1;n++){ if(grid[i][n]! =0){ k=0; break; } if(grid[i][n]==0&&n==y-1){ remove(); } } } if(y0>y){ for(n=y0;n>=y+1;n--){ if(grid[i][n]! =0){ k=0; break; } if(grid[i][n]==0&&n==y+1){ remove(); } } } } } } } publicvoidlinePassOne(){ if(y0>j){//第一按钮同行空按钮在左边 for(i=y0-1;i>=j;i--){//判断第一按钮同左侧空按钮之间有没按钮 if(grid[x0][i]! =0){ k=0; break; } else{k=2;}//K=2说明通过了第二次验证 } } if(y0 for(i=y0+1;i<=j;i++){ if(grid[x0][i]! =0){ k=0; break; } else{k=2;} } } } publicvoidrowPassOne(){ if(x0>i){ for(j=x0-1;j>=i;j--){ if(grid[j][y0]! =0){ k=0; break; } else{k=2;} } } if(x0 for(j=x0+1;j<=i;j++){ if(grid[j][y0]! =0){ k=0; break; } else{k=2;} } } } publicvoidremove(){ firstButton.setVisible(false); secondButton.setVisible(false); fraction(); pressInformation=false; k=0; grid[x0][y0]=0; grid[x][y]=0; } publicvoidactionPerformed(ActionEvente){ if(e.getSource()==newlyButton){ intgrid[][]=newint[8][7]; this.grid=grid; randomBuild(); mainFrame.setVisible(false); pressInformation=false; init(); } if(e.getSource()==exitButton) System.exit(0); if(e.getSource()==resetButton) reload(); for(intcols=0;cols<6;cols++){ for(introws=0;rows<5;rows++){ if(e.getSource()==diamondsButton[cols][rows]) estimateEven(cols+1,rows+1,diamondsButton[cols][rows]); } } } publicstaticvoidmain(String[]args){ lianliankanllk=newlianliankan(); llk.randomBuild(); llk.init(); } } 关键技术: Java的接口技术 Java的事件处理机制 Java的布局管理 参考文献: [1]刘光明.企业文化与核心竞争力[J].经济管理,2002,(17). [2]CochranJK,QualBKP.AMicrocomputerSystemforQualitativfeSimulation[J].Simulation,1990,58(11) [3]张刚.企业组织创新研究[M].北京: 科学出版社,2000 [4]张庆生.地质力学系统理论[D].武汉: 中国地质大学,2001. [5]刘宪恩.形成学校文化的基本源点[N].光明日报,2002-3-12(B1). 总结: 通过本次JAVA课程设计,我更加充分的理解了课本上的知识,并能够加以扩展,从而应用于实践当中,这几天的课程设计令我受益匪浅,很多平时模棱两可的知识点都认真复习并实践了。 我对JAVA提升了认识,我意识到我们所学的东西将来都是要付诸实践的,所以一切要从实际情况出发,理论联系实际,这样才能真正发挥我们所具备的能力。 经过此次课程设计,我向我成功的目标又迈进了一步。 指导教师签字: 年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一份 JAVA 连连 课程设计