📄 lianliankan.java
字号:
import java.awt.*;
import java.awt.event.*;
public class lianliankan implements ActionListener
{
static String s="no"; //用来纪录点击按钮的信息
int x0=0,y0=0,x=0,y=0,n1=0,n2=0; //用来纪录按钮的位置信息
Frame f,f1;
Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10; //添加30个按钮
Button b11,b12,b13,b14,b15,b16,b17,b18; // 来实现游戏界面
Button b19,b20,b21,b22,b23,b24,b25; //可以用数组实现
Button b26,b27,b28,b29,b30,bc;
Button p1,p2,br,bt1,bt2; //p1、p2为选定的按钮
Panel panel1,panel2;
int d[][]={ //用来和界面的按钮建立映射关系
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0}
};
public static void main(String[] args)
{
lianliankan t=new lianliankan();
t.suiji();
t.go();
}
public void actionPerformed(ActionEvent e) //再来一次按钮的响应事件。
{
int d[][]={
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0}
};
this.d=d;
suiji(); //调用随机函数,产生随机数;
f.setVisible(false);
f1.setVisible(false);
s="no";
go();
}
/////////////////////////////////////初始化界面
public void go()
{
f=new Frame("连连看!FOX");
panel2=new Panel();
panel1=new Panel();
bc=new Button(" EXIT");
br=new Button("RESET");
p1=new Button();
b1=new Button(String.valueOf(d[1][1]));
b2=new Button(String.valueOf(d[1][2]));
b3=new Button(String.valueOf(d[1][3]));
b4=new Button(String.valueOf(d[1][4]));
b5=new Button(String.valueOf(d[1][5]));
b6=new Button(String.valueOf(d[2][1]));
b7=new Button(String.valueOf(d[2][2]));
b8=new Button(String.valueOf(d[2][3]));
b9=new Button(String.valueOf(d[2][4]));
b10=new Button(String.valueOf(d[2][5]));
b11=new Button(String.valueOf(d[3][1]));
b12=new Button(String.valueOf(d[3][2]));
b13=new Button(String.valueOf(d[3][3]));
b14=new Button(String.valueOf(d[3][4]));
b15=new Button(String.valueOf(d[3][5]));
b16=new Button(String.valueOf(d[4][1]));
b17=new Button(String.valueOf(d[4][2]));
b18=new Button(String.valueOf(d[4][3]));
b19=new Button(String.valueOf(d[4][4]));
b20=new Button(String.valueOf(d[4][5]));
b21=new Button(String.valueOf(d[5][1]));
b22=new Button(String.valueOf(d[5][2]));
b23=new Button(String.valueOf(d[5][3]));
b24=new Button(String.valueOf(d[5][4]));
b25=new Button(String.valueOf(d[5][5]));
b26=new Button(String.valueOf(d[6][1]));
b27=new Button(String.valueOf(d[6][2]));
b28=new Button(String.valueOf(d[6][3]));
b29=new Button(String.valueOf(d[6][4]));
b30=new Button(String.valueOf(d[6][5]));
panel1.setSize(500,600);
panel2.setSize(100,40);
panel1.setLayout(new GridLayout(6,5)); //panel1上面放置6行5列按钮
panel1.setBackground(Color.black);
panel1.setLocation(50,100);
panel2.setLocation(0,200);
bc.setLocation(0,40);
br.setLocation(0,100);
panel1.setFont(new Font("宋体",64,35));
panel2.setFont(new Font("宋体",44,30));
f.add(panel1); f.add(panel2);
panel2.add(bc); panel2.add(br);
panel1.add(b1); panel1.add(b2); panel1.add(b3);
panel1.add(b4); panel1.add(b5); panel1.add(b6);
panel1.add(b7); panel1.add(b8); panel1.add(b9);
panel1.add(b10); panel1.add(b11); panel1.add(b12);
panel1.add(b13); panel1.add(b14); panel1.add(b15);
panel1.add(b16); panel1.add(b17); panel1.add(b18);
panel1.add(b19); panel1.add(b20); panel1.add(b21);
panel1.add(b22); panel1.add(b23); panel1.add(b24);
panel1.add(b25); panel1.add(b26); panel1.add(b27);
panel1.add(b28); panel1.add(b29); panel1.add(b30);
f.pack();
f.setBounds(25,10,600,750);
f.setResizable(false);
f.setVisible(true);
bc.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { ex(); }
});
br.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { chonglie(); }
});
b1.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){ wei(1,1,b1); }
});
b2.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(1,2,b2); }
});
b3.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(1,3,b3); }
});
b4.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(1,4,b4); }
});
b5.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(1,5,b5); }
});
b6.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){ wei(2,1,b6); }
});
b7.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(2,2,b7); }
});
b8.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(2,3,b8); }
});
b9.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(2,4,b9); }
});
b10.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){ wei(2,5,b10); }
});
b11.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(3,1,b11); }
});
b12.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(3,2,b12); }
});
b13.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(3,3,b13); }
});
b14.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(3,4,b14); }
});
b15.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(3,5,b15); }
});
b16.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(4,1,b16); }
});
b17.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(4,2,b17); }
});
b18.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(4,3,b18); }
});
b19.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(4,4,b19); }
});
b20.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(4,5,b20); }
});
b21.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){ wei(5,1,b21); }
});
b22.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(5,2,b22); }
});
b23.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(5,3,b23); }
});
b24.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){ wei(5,4,b24); }
});
b25.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(5,5,b25); }
});
b26.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(6,1,b26); }
});
b27.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(6,2,b27); }
});
b28.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(6,3,b28); }
});
b29.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(6,4,b29); }
});
b30.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) { wei(6,5,b30); }
});
}
////////////////////////退出游戏界面
public void ex()
{
f1=new Frame("EXIT THIS GAME!");
f1.setLayout(new GridLayout(1,1));
bt1=new Button("EXIT!");
bt2=new Button("AGAIN!");
f1.setFont(new Font("宋体",64,35));
f1.add(bt1);
f1.add(bt2);
f1.pack();
f1.setBounds(200,250,300,100);
f1.setResizable(false);
f1.show();
f1.setVisible(true);
bt1.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{ System.exit(0); }
});
bt2.addActionListener(this);
}
/////////////////////////产生随机数,来填充游戏界面对应的数组的各个位置
public void suiji()
{
int m,n,k=0,k1,k2,k3;
for(m=1;m<=15;m++)
{
k1=(int)(Math.random()*25+1);
for(n=1;n<=2;n++)
{
k2=(int)(Math.random()*6+1);
k3=(int)(Math.random()*5+1);
while(d[k2][k3]!=0 && k!=30)
{
k2=(int)(Math.random()*6+1);
k3=(int)(Math.random()*5+1);
}
this.d[k2][k3]=k1;
k++;
}
}
}
/////////////////////// 当无图形可消去时,需重新排列图形
public void chonglie()
{
int save[],i,j,n=0,k2,k3,k;
int d[][]={ //一定要注意d数组与按纽是映射关系
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0}
};
save=new int[30];
for(n=0;n<30;n++)
save[n]=0; //定义一个数组来保存当前的每个按钮位置上的信息
n=0;
for(i=0;i<=6;i++)
for(j=0;j<=5;j++)
{
if(this.d[i][j]!=0)
{
save[n]=this.d[i][j];
n++;
}
}
n=n-1;
this.d=d;
while(n>=0) //产生随机位置,放置按钮
{
k2=(int)(Math.random()*6+1);
k3=(int)(Math.random()*5+1);
while(d[k2][k3]!=0) //这个判断是排除产生两个相同的随机值
{
k2=(int)(Math.random()*6+1);
k3=(int)(Math.random()*5+1);
}
this.d[k2][k3]=save[n];
n--;
}
f.setVisible(false);
s="no"; //这里一定要将按钮点击信息归为初始
go(); //调用初始界面
ling(); //将值为零的按钮消去(设为不可见)
}
////////////////////////将数组中为零的成员所对应的按钮消去(设为不可见)
public void ling()
{ //用按钮类型的数组实现会简化得多,
if(d[1][1]==0)
b1.setVisible(false);
if(d[1][2]==0)
b2.setVisible(false);
if(d[1][3]==0)
b3.setVisible(false);
if(d[1][4]==0)
b4.setVisible(false);
if(d[1][5]==0)
b5.setVisible(false);
if(d[2][1]==0)
b6.setVisible(false);
if(d[2][2]==0)
b7.setVisible(false);
if(d[2][3]==0)
b8.setVisible(false);
if(d[2][4]==0)
b9.setVisible(false);
if(d[2][5]==0)
b10.setVisible(false);
if(d[3][1]==0)
b11.setVisible(false);
if(d[3][2]==0)
b12.setVisible(false);
if(d[3][3]==0)
b13.setVisible(false);
if(d[3][4]==0)
b14.setVisible(false);
if(d[3][5]==0)
b15.setVisible(false);
if(d[4][1]==0)
b16.setVisible(false);
if(d[4][2]==0)
b17.setVisible(false);
if(d[4][3]==0)
b18.setVisible(false);
if(d[4][4]==0)
b19.setVisible(false);
if(d[4][5]==0)
b20.setVisible(false);
if(d[5][1]==0)
b21.setVisible(false);
if(d[5][2]==0)
b22.setVisible(false);
if(d[5][3]==0)
b23.setVisible(false);
if(d[5][4]==0)
b24.setVisible(false);
if(d[5][5]==0)
b25.setVisible(false);
if(d[6][1]==0)
b26.setVisible(false);
if(d[6][2]==0)
b27.setVisible(false);
if(d[6][3]==0)
b28.setVisible(false);
if(d[6][4]==0)
b29.setVisible(false);
if(d[6][5]==0)
b30.setVisible(false);
}
//////////////判断并纪录每次点击按钮的信息,//////////////////////////
//////////////p1、p2为点击了的按钮,d[x0][y0]和d[x][y]为对应的值。////
//////////////当两次的按钮的值相同时才能消去。 ///////////////////////
public void wei(int w1,int w2,Button bz) //
{
if((s.trim()).equals("no"))
{
s=b1.getLabel();
x0=w1;
y0=w2;
n1=d[x0][y0];
p1=bz;
x=w1;
y=w2;
n2=d[x][y];
p2=bz;
}
else
{
x0=x;
y0=y;
n1=d[x0][y0];
p1=p2;
x=w1;
y=w2;
n2=d[x][y];
p2=bz;
if(n1==n2 && p2!=p1)
{
xiao(); //调用消去符合条件的两个相同按钮
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -