p1.add(b[29]);
b[29].addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
LLkan(6,5);
}
});
p2.add(exit);
p2.add(change);
exit.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
exit();
}
});
change.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
change();
}
});
p3.add(T);
p3.add(l);
f.add(p1);
f.add(p2);
f.add(p3);
f.pack();
f.setBounds(280,100,500,450);
f.setVisible(true);
}
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("Again"))
{
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;
f.setVisible(false);
f1.setVisible(false);
this.init();
this.start();
}
else{
System.exit(0);
}
}
public void exit(){
f1=new Frame("exit");
f1.setLayout(new FlowLayout());
f1.setLocation(150, 150);
f1.setBackground(Color.orange);
f1.setBounds(500, 200, 150, 150);
f1.setVisible(true);
out = new Button("Out");
again = new Button("Again");
f1.add(out);
f1.add(again);
f1.pack();
out.addActionListener(this);
again.addActionListener(this);
}
public void init(){
int s=0,k,k1,k2,j;
while(s<30)
{
k=(int) (Math.random()*30+2);
for(j=1;j<=2;j++)
{
k1=(int)(Math.random()*6+1);
k2=(int)(Math.random()*5+1);
while(this.d[k1][k2]!=0)
{
k1=(int)(Math.random()*6+1);
k2=(int)(Math.random()*5+1);
}
this.d[k1][k2]=k;
s++;
}
}
}
public void change()
{
int i,j,k,o,p,n=0;
for(i=1;i<=6;i++){
for(j=1;j<=5;j++){
if(this.d[i][j]!=0)
n++;
}
}
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;
while(n>0)
{
k=(int) (Math.random()*30+1);
for(j=1;j<=2;j++)
{
o=(int)(Math.random()*6+1);
p=(int)(Math.random()*5+1);
while(this.d[o][p]!=0)
{
o=(int)(Math.random()*6+1);
p=(int)(Math.random()*5+1);
}
this.d[o][p]=k;
n--;
}
}
f.setVisible(false);
this.start();
this.killzero();
}
void killzero()
{
int i,j,n=0;
for(i=1;i<=6;i++)
{
for(j=1;j<=5;j++)
{
if(d[i][j]==0)
b[n].setVisible(false);
n++;
}
}
}
void LLkan(int x,int y){
if(flag==1)
{
x1=x;
y1=y;
flag=2;
}
else
{
int turn = 0,a,b;
a=x1;b=y1;
x2=x;
y2=y;
if(d[x1][y1]==d[x2][y2])
{
int x0=x1,y0=y1;
if(x2>=x1&&y2>=y1)
{
while(x1!=x2||y1!=y2)
{
if(d[x1+1][y1]==0)
{
x1++;
if((x1-x0)<2)
{
turn++;
x0=x1-1;
y0=y1;
}
}
else if(d[x1][y1+1]==0)
{
y1++;
if((y1-y0)<2)
{
turn++;
y0=y1-1;
x0=x1;
}
}
else if((x1+1)==x2&&y1==y2||x1==x2&&(y1+1)==y2)
{
turn=1;break;
}
else
break;
}
if(turn<=3&&turn>0)
{
System.out.println(x1+"*"+y1+"*"+x2+"*"+y2);
System.out.println(a+"@"+b);
this.d[a][b]=0;
this.d[x2][y2]=0;
this.killzero();
}
}
else if(x2>=x1&&y2<=y1)
{
while(x1!=x2||y1!=y2)
{
if(d[x1+1][y1]==0)
{
x1++;
if(x1-x0<2)
{
turn++;
x0=x1-1;
y0=y1;
}
}
else if(d[x1][y1-1]==0)
{
y1--;
if((y0-y1)<2)
{
turn++;
y0=y1+1;
x0=x1;
}
}
else if((x1+1)==x2&&y1==y2||x1==x2&&(y1-1)==y2)
{
turn=1;
break;
}
else
break;
if(turn<=3&&turn>0)
{
this.d[a][b]=0;
this.d[x2][y2]=0;
this.killzero();
}
}
}
else if(x2<=x1&&y2<=y1)
{
while(x1!=x2||y1!=y2)
{
if(d[x1-1][y1]==0)
{
x1--;
if(x0-x1<2)
{
turn++;
x0=x1+1;
y0=y1;
}
}
else if(d[x1][y1-1]==0)
{
y1--;
if((y0-y1)<2)
{
turn++;
y0=y1+1;
x0=x1;
}
}
else if((x1-1)==x2&&y1==y2||x1==x2&&(y1-1)==y2)
{
turn=1;
break;
}
if(turn<=3&&turn>0)
{
this.d[a][b]=0;
this.d[x2][y2]=0;
this.killzero();
}
}
}
else if(x2<=x1&&y2>=y1)
{
while(x1!=x2||y1!=y2)
{
if(d[x1-1][y1]==0)
{
x1--;
if(x0-x1<2)
{
turn++;
x0=x1+1;
y0=y1;
}
}
else if(d[x1][y1+1]==0)
{
y1++;
if(y1-y0<2)
{
turn++;
y0=y1-1;
x0=x1;
}
}
else if((x1-1)==x2&&y1==y2||x1==x2&&(y1+1)==y2)
{
turn=1;
break;
}
else
break;
if(turn<=3&&turn>0)
{
this.d[a][b]=0;
this.d[x2][y2]=0;
this.killzero();
}
}
}
}
flag=1;
}
}
public static void main(String args[]){
MyLLK M = new MyLLK();
M.init();
M.start();
}
}