基于Java实现连连看游戏的示例代码_第1页
基于Java实现连连看游戏的示例代码_第2页
基于Java实现连连看游戏的示例代码_第3页
基于Java实现连连看游戏的示例代码_第4页
基于Java实现连连看游戏的示例代码_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第基于Java实现连连看游戏的示例代码ArrayListIntegernumbers=newArrayListInteger//链表

for(inti=0;iKinds;i++){

numbers.add(i+1);//加到列表尾部

numbers.add(i+1);

}//每一次重新布局的时候,能保证一定有前几种难度中的图片类型

Randomrandom=newRandom();

inttemp=0;

for(inti=0;i32-Kinds;i++){

temp=random.nextInt(Kinds)+1;//0~kinds-1之间的随机数在加1

numbers.add(temp);

numbers.add(temp);

Collections.shuffle(numbers);//随机打乱原来的顺序

map=newint[8][8];

temp=0;

for(inti=0;ii++){

for(intj=0;jj++){

//JOptionPane.showMessageDialog(null,numbers.get(temp));

map[i][j]=numbers.get(temp++).intValue();//get方法返回第i个元素,intvalue返回int类型

publicvoiditemStateChanged(ItemEvente){

//TODO自动生成的方法存根

if(e.getSource()==difficultChoice){

Stringselected=difficultChoice.getSelectedItem();

if(selected=="简单"){

Kinds=4;

newGame();

repaint();

}elseif(selected=="中等"){

Kinds=8;

newGame();

repaint();

}elseif(selected=="困难"){

Kinds=12;

newGame();

repaint();

}elseif(selected=="变态"){

Kinds=15;

newGame();

repaint();

publicvoidactionPerformed(ActionEvente){

//TODO自动生成的方法存根

if(ld.getTimes()56){

for(inti=0;ii++){

for(intj=0;jj++){

BlockButton[j][i].setEnabled(false);

if(e.getSource()==reLoad){

chongzai();

reLoad.setEnabled(false);

if(e.getSource()==newgameButton){

newGame();

reLoad.setEnabled(true);

for(inti=0;ii++){

for(intj=0;jj++){

if(e.getSource()==BlockButton[j][i]){

clicktimes++;//点击的次数

lineStart.move(i,j);

if(clicktimes%2==1){

coordinatex1=i;

coordinatey1=j;

BlockButton[coordinatey1][coordinatex1].setEnabled(false);

BlockButton[coordinatey][coordinatex].setEnabled(true);

//BlockButton[j][i].setEnabled(false);

if(clicktimes%2==0){

coordinatex=i;

coordinatey=j;

BlockButton[coordinatey][coordinatex].setEnabled(false);

BlockButton[coordinatey1][coordinatex1].setEnabled(true);

this.requestFocus();

clearBlock();

*for(inti=0;ii++){for(intj=0;jj++){

*BlockButton[j][i].setEnabled(true);}

repaint();

//--------------------------------------------------------------------------

//判断在一列之内两图片之间是否全部是空白或直接相邻

privatebooleancontainsAllOrNoneZeroInColumn(intposX1,intposY1,

intposX2,intposY2){

//直接相连,因而不包含空白

if(Math.abs(posY1-posY2)==0){

returntrue;

inta=posY1posY2posY1:posY2;

intb=posY1posY2posY2:posY1;//y值:a小b大

for(intj=a+1;jj++){

if(map[posX1][j]!=0){

returnfalse;

returntrue;

//判断在一行之内两图片之间是否全部是空白或直接相邻

privatebooleancontainsAllOrNoneZeroInRow(intposX1,intposY1,

intposX2,intposY2){

//直接相连,因而不包含空白

if(Math.abs(posX1-posX2)==0){

returntrue;

inta=posX1posX2posX1:posX2;

intb=posX1posX2posX2:posX1;

for(inti=a+1;ii++){

if(map[i][posY1]!=0){

returnfalse;

returntrue;

//是否可以一直线相连

privatebooleanisLinkByOneLine(intposX1,intposY1,intposX2,

intposY2){

if(posX1!=posX2posY1!=posY2){

returnfalse;

if(posX1==posX2){

if(containsAllOrNoneZeroInColumn(posX1,posY1,posX2,posY2)){

returntrue;

if(posY1==posY2){

if(containsAllOrNoneZeroInRow(posX1,posY1,posX2,posY2)){

returntrue;

returnfalse;

//是否可以两直线相连

privatebooleanisLinkByTwoLines(intposX1,intposY1,intposX2,

intposY2){

if(posX1!=posX2posY1!=posY2){

//x1,y1tox2,y1tox2,y2

if(containsAllOrNoneZeroInRow(posX1,posY1,posX2,posY1)

map[posX2][posY1]==0

containsAllOrNoneZeroInColumn(posX2,posY1,posX2,

posY2)){

returntrue;

//x1,y1tox1,y2tox2,y2

if(containsAllOrNoneZeroInColumn(posX1,posY1,posX1,posY2)

map[posX1][posY2]==0

containsAllOrNoneZeroInRow(posX1,posY2,posX2,

posY2)){

returntrue;

returnfalse;

//是否可以三直线相连

privatebooleanisLinkByThreeLines(intposX1,intposY1,intposX2,

intposY2){

if(isOnSameEdge(posX1,posY1,posX2,posY2)){

returntrue;

if(isOnThreeLinesLikeArc(posX1,posY1,posX2,posY2)){

returntrue;

if(isOnThreeLinesLikeZigzag(posX1,posY1,posX2,posY2)){

returntrue;

returnfalse;

//是否可以三直线相连,似U形

privatebooleanisOnThreeLinesLikeArc(intposX1,intposY1,intposX2,

intposY2){

if(isOnUpArc(posX1,posY1,posX2,posY2)){

returntrue;

if(isOnDownArc(posX1,posY1,posX2,posY2)){

returntrue;

if(isOnLeftArc(posX1,posY1,posX2,posY2)){

returntrue;

if(isOnRightArc(posX1,posY1,posX2,posY2)){

returntrue;

returnfalse;

//∪

privatebooleanisOnUpArc(intposX1,intposY1,intposX2,intposY2){

//Y--0

intlessY=posY1posY2posY1:posY2;//找小y

for(intj=lessY-1;jj--){

if(containsAllOrNoneZeroInRow(posX1,j,posX2,j)

containsAllOrNoneZeroInColumn(posX1,posY1,posX1,j)

containsAllOrNoneZeroInColumn(posX2,posY2,posX2,j)

map[posX1][j]==0map[posX2][j]==0){

returntrue;

if(isOnSameEdge(posX1,0,posX2,0)

containsAllOrNoneZeroInColumn(posX1,posY1,posX1,0)

containsAllOrNoneZeroInColumn(posX2,posY2,posX2,0)

(map[posX1][0]==0map[posX2][0]==0

||map[posX1][0]==0

map[posX2][0]==map[posX2][posY2]||map[posX1][0]==map[posX1][posY1]

map[posX2][0]==0)){

returntrue;

returnfalse;

//∩

privatebooleanisOnDownArc(intposX1,intposY1,intposX2,intposY2){

intmoreY=posY1posY2posY2:posY1;

for(intj=moreY+1;j=8-1;j++){

if(containsAllOrNoneZeroInRow(posX1,j,posX2,j)

containsAllOrNoneZeroInColumn(posX1,posY1,posX1,j)

containsAllOrNoneZeroInColumn(posX2,posY2,posX2,j)

map[posX1][j]==0map[posX2][j]==0){

returntrue;

if(isOnSameEdge(posX1,8-1,posX2,8-1)

containsAllOrNoneZeroInColumn(posX1,posY1,posX1,8-1)

containsAllOrNoneZeroInColumn(posX2,posY2,posX2,8-1)

(map[posX1][8-1]==0map[posX2][8-1]==0

||map[posX1][8-1]==map[posX1][posY1]

map[posX2][8-1]==0||map[posX1][8-1]==0

map[posX2][8-1]==map[posX2][posY2])){

returntrue;

returnfalse;

//﹚

privatebooleanisOnLeftArc(intposX1,intposY1,intposX2,intposY2){

intlessX=posX1posX2posX1:posX2;

for(inti=lessX-1;ii--){

if(containsAllOrNoneZeroInColumn(i,posY1,i,posY2)

containsAllOrNoneZeroInRow(i,posY1,posX1,posY1)

containsAllOrNoneZeroInRow(i,posY2,posX2,posY2)

map[i][posY1]==0map[i][posY2]==0){

returntrue;

if(isOnSameEdge(0,posY1,0,posY2)

containsAllOrNoneZeroInRow(0,posY1,posX1,posY1)

containsAllOrNoneZeroInRow(0,posY2,posX2,posY2)

(map[0][posY1]==0map[0][posY2]==0

||map[0][posY1]==map[posX1][posY1]

map[0][posY2]==0||map[0][posY1]==0

map[0][posY2]==map[posX2][posY2])){

returntrue;

returnfalse;

//(

privatebooleanisOnRightArc(intposX1,intposY1,intposX2,intposY2){

intmoreX=posX1posX2posX2:posX1;

for(inti=moreX+1;i=8-1;i++){

if(containsAllOrNoneZeroInColumn(i,posY1,i,posY2)

containsAllOrNoneZeroInRow(i,posY1,posX1,posY1)

containsAllOrNoneZeroInRow(i,posY2,posX2,posY2)

map[i][posY1]==0map[i][posY2]==0){

returntrue;

if(isOnSameEdge(8-1,posY1,8-1,posY2)

containsAllOrNoneZeroInRow(posX1,posY1,8-1,posY1)

containsAllOrNoneZeroInRow(posX2,posY2,8-1,posY2)

(map[8-1][posY1]==0map[8-1][posY2]==0

||map[8-1][posY1]==map[posX1][posY1]

map[8-1][posY2]==0||map[8-1][posY1]==0

map[8-1][posY2]==map[posX2][posY2])){

returntrue;

returnfalse;

//是否可以三直线相连,似之字形N

privatebooleanisOnThreeLinesLikeZigzag(intposX1,intposY1,

intposX2,intposY2){

if(isOnZigzagWith1Row2Cols(posX1,posY1,posX2,posY2)){

returntrue;

if(isOnZigzagWith2Rows1Col(posX1,posY1,posX2,posY2)){

returntrue;

returnfalse;

//是否可以三直线相连,似之字形,两行一列Z

privatebooleanisOnZigzagWith2Rows1Col(intposX1,intposY1,

intposX2,intposY2){

intmoreX=posX1posX2posX2:posX1;

intlessX=posX1posX2posX1:posX2;

for(inti=lessX+1;imoreX;i++){

if(containsAllOrNoneZeroInColumn(i,posY1,i,posY2)

containsAllOrNoneZeroInRow(i,posY1,posX1,posY1)

containsAllOrNoneZeroInRow(i,posY2,posX2,posY2)

map[i][posY1]==0map[i][posY2]==0){

returntrue;

returnfalse;

//是否可以三直线相连,似之字形,一行两列

privatebooleanisOnZigzagWith1Row2Cols(intposX1,intposY1,

intposX2,intposY2){

intmoreY=posY1posY2posY2:posY1;

intlessY=posY1posY2posY1:posY2;

for(intj=lessY+1;jmoreY;j++){

if(containsAllOrNoneZeroInRow(posX1,j,posX2,j)

containsAllOrNoneZeroInColumn(posX1,posY1,posX1,j)

containsAllOrNoneZeroInColumn(posX2,posY2,posX2,j)

map[posX1][j]==0map[posX2][j]==0){

returntrue;

returnfalse;

//是否处于游戏区域的4条边的同一边上

privatebooleanisOnSameEdge(intposX1,intposY1,intposX2,intposY2){

if((posY1==posY2posY2==0)

||(posY1==posY2posY2==8-1)

||(posX1==posX2posX2==0)

||(posX1==posX2posX2==8-1)){

returntrue;

returnfalse;

//--------------------------------------------------------------------------

publicbooleanifcanTouch(intposX1,intposY1,intposX2,intposY2){

if(isLinkByOneLine(posX1,posY1,posX2,posY2)){

returntrue;

//是否可以两直线相连

if(isLinkByTwoLines(posX1,posY1,posX2,posY2)){

returntrue;

//是否可以三直线相连

if(isLinkByThreeLines(posX1,posY1,posX2,posY2)){

returntrue;

returnfalse;

publicvoidclearBlock(){

if(clicktimes=2){

if(map[coordinatey1][coordinatex1]==map[coordinatey][coordinatex]

!((coordinatex1==coordinatex)(coordinatey1==coordinatey))){

if(ifcanTouch(coordinatey1,coordinatex1,coordinatey,

coordinatex)){

if(map[coordinatey1][coordinatex1]0)

score=score+10;

map[coordinatey1][coordinatex1]=0;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论