Helo pà con!
Tui vừa kiếm được code 1 game caro trên mạng nè. có ai quan tâm đến cái này ko í nhỉ??
=====================================
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.Math;
public class CaroAuto extends JFrame
{
private Boolean[] o=new Boolean[15*15];
private Boolean[] x=new Boolean[15*15];
private MyButton[] bt=new MyButton[15*15];
private JOptionPane jop=new JOptionPane();
private Boolean[] b=new Boolean[15*15];
private int sodiem=-1;
private int max=0;
private Diem[] vt=new Diem[50];
public CaroAuto()
{
super("Tro choi co Caro");
setSize(700,700);
setLayout(new GridLayout(15,15));
setDefaultCloseOperation(EXIT_ON_CLOSE);
for (int i=0;i<15*15;i++)
{
o[i]=false;
x[i]=false;
b[i]=false;
}
BuiGui();
setVisible(true);
}
public void BuiGui()
{
int i;
for ( i=0;i<15*15;i++)
{
bt[i]=new MyButton(i);
add(bt[i]);
bt[i].addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
MyButton tg=(MyButton)ae.getSource();
if ( (o[tg.pos]==false) & (x[tg.pos]==false) )
{
b[tg.pos]=false;
if ( (tg.pos-1>=0))
if ((o[tg.pos-1]==false) & (x[tg.pos-1]==false) ) b[tg.pos-1]=true;
if ( (tg.pos+1<15*15))
if ((o[tg.pos+1]==false) & (x[tg.pos+1]==false) ) b[tg.pos+1]=true;
if ( (tg.pos-15>=0))
if ((o[tg.pos-15]==false) & (x[tg.pos-15]==false) ) b[tg.pos-15]=true;
if ( (tg.pos+15<15*15))
if ((o[tg.pos+15]==false) & (x[tg.pos+15]==false) ) b[tg.pos+15]=true;
if ( (tg.pos-14>=0))
if ((o[tg.pos-14]==false) & (x[tg.pos-14]==false) ) b[tg.pos-14]=true;
if ( (tg.pos+14<15*15))
if ((o[tg.pos+14]==false) & (x[tg.pos+14]==false) ) b[tg.pos+14]=true;
if ( (tg.pos-16>=0))
if ((o[tg.pos-16]==false) & (x[tg.pos-16]==false) ) b[tg.pos-16]=true;
if ( (tg.pos+16<15*15))
if ((o[tg.pos+16]==false) & (x[tg.pos+16]==false) ) b[tg.pos+16]=true;
tg.setIcon(new ImageIcon("icono.gif"));
o[tg.pos]=true;
if (win(o,tg.pos))
{
jop.showMessageDialog(null,"quan O da~ chien thang !!");
setVisible(false);
new CaroAuto();
}
tim(b);
}
}
});
}
}
public static void main(String[] args)
{
new CaroAuto();
}
private class MyButton extends JButton
{
private int pos;
public MyButton(int j)
{
pos=j;
setText("");
}
}
private class Diem
{
private int dodai;
private int toado;
private boolean loai;
}
public void tim(Boolean[] b)
{
int i;
max=0;
int chon;
Diem tg;
sodiem=0;
Boolean tancong=false;
for (i=0;i<15*15;i++)
{
if (b[i])
{
tg=xet(i);
if (((int)tg.dodai)==max)
{
if ((tancong) & (tg.loai==false))
{
sodiem++;
vt[sodiem]=tg;
}
if (tancong==false)
{
sodiem++;
vt[sodiem]=tg;
}
if (tg.loai==false)
tancong=true;
}
if (tg.dodai>max)
{
max=tg.dodai;
sodiem=0;
vt[sodiem]=tg;
if (tg.loai==false) tancong=true;
}
}
}
chon=(int)Math.round(Math.random()*10*sodiem)%(sod iem+1);
{
bt[vt[chon].toado].setIcon(new ImageIcon("iconx.gif"));
x[vt[chon].toado]=true;
b[vt[chon].toado]=false;
if ( (vt[chon].toado-1>=0))
if ((o[vt[chon].toado-1]==false) & (x[vt[chon].toado-1]==false) ) b[vt[chon].toado-1]=true;
if ( (vt[chon].toado+1<15*15))
if ((o[vt[chon].toado+1]==false) & (x[vt[chon].toado+1]==false) ) b[vt[chon].toado+1]=true;
if ( (vt[chon].toado-15>=0))
if ((o[vt[chon].toado-15]==false) & (x[vt[chon].toado-15]==false) ) b[vt[chon].toado-15]=true;
if ( (vt[chon].toado+15<15*15))
if ((o[vt[chon].toado+15]==false) & (x[vt[chon].toado+15]==false) ) b[vt[chon].toado+15]=true;
if ( (vt[chon].toado-14>=0))
if ((o[vt[chon].toado-14]==false) & (x[vt[chon].toado-14]==false) ) b[vt[chon].toado-14]=true;
if ( (vt[chon].toado+14<15*15))
if ((o[vt[chon].toado+14]==false) & (x[vt[chon].toado+14]==false) ) b[vt[chon].toado+14]=true;
if ( (vt[chon].toado-16>=0))
if ((o[vt[chon].toado-16]==false) & (x[vt[chon].toado-16]==false) ) b[vt[chon].toado-16]=true;
if ( (vt[chon].toado+16<15*15))
if ((o[vt[chon].toado+16]==false) & (x[vt[chon].toado+16]==false) ) b[vt[chon].toado+16]=true;
if (win(x,vt[chon].toado))
{
jop.showMessageDialog(null,"quan X da~ chien thang !!");
setVisible(false);
new CaroAuto();
}
}
}
public Diem xet(int k)
{
Diem tg=new Diem();
int dodai=0;
int d,dem=1;
int vovan=0;
d=1;
int i=k+d;
if (i<15*15)
{
while ((o[i])&(i%15>=k%15))
{
dem++;
i=i+d;
if (i>=15*15) { vovan++; break; }
if ((x[i])&(i%15>=k%15))
vovan++;
}
}
i=k-d;
if (i>=0)
{
while ((o[i])&(i%15
{
dem++;
i=i-d;
if (i<0) { vovan++; break; }
if ((x[i])&(i%15
vovan++;
}
}
if (dem<5) dem=dem-vovan;
if (dem>=dodai)
{
dodai=dem;
tg.dodai=dem;
tg.toado=k;
}
vovan=0;
dem=1;
d=15;
i=k+d;
if (i<15*15)
{
while ((o[i])&(i/15>=k/15))
{
dem++;
i=i+d;
if (i>=15*15) { vovan++; break; }
if ((x[i])&(i/15>=k/15))
vovan++;
}
}
i=k-d;
if (i>=0)
{
while ((o[i])&(i/15
{
dem++;
i=i-d;
if (i<0) { vovan++; break; }
if ((x[i])&(i/15
vovan++;
}
}
if (dem<5) dem=dem-vovan;
if (dem>=dodai)
{
dodai=dem;
tg.dodai=dem;
tg.toado=k;
}
vovan=0;
dem=1;
d=16;
i=k+d;
if (i<15*15)
{
while ((o[i])&(i%15>=k%15))
{
dem++;
i=i+d;
if (i>=15*15) { vovan++; break; }
if ((x[i])&(i%15>=k%15))
vovan++;
}
}
i=k-d;
if (i>=0)
{
while ((o[i])&(i%15
{
dem++;
i=i-d;
if (i<0) { vovan++; break; }
if ((x[i])&(i%15
vovan++;
}
}
if (dem<5) dem=dem-vovan;
if (dem>=dodai)
{
dodai=dem;
tg.dodai=dem;
tg.toado=k;
}
vovan=0;
dem=1;
d=14;
i=k+d;
if (i<15*15)
{
while ((o[i])&(i%15<=k%15))
{
dem++;
i=i+d;
if (i>=15*15) { vovan++; break; }
if ((x[i])&(i%15<=k%15))
vovan++;
}
}
i=k-d;
if (i>=0)
{
while ((o[i])&(i%15>k%15))
{
dem++;
i=i-d;
if (i<0) { vovan++; break; }
if ((x[i])&(i%15>k%15))
vovan++;
}
}
if (dem<5) dem=dem-vovan;
if (dem>=dodai)
{
dodai=dem;
tg.dodai=dem;
tg.toado=k;
}
tg.loai=true;
vovan=0;
dem=1;
d=1;
i=k+d;
if (i<15*15)
{
while ((x[i])&(i%15>=k%15))
{
dem++;
i=i+d;
if (i>=15*15) { vovan++; break; }
if ((o[i])&(i%15>=k%15))
vovan++;
}
}
i=k-d;
if (i>=0)
{
while ((x[i])&(i%15
{
dem++;
i=i-d;
if (i<0) { vovan++; break; }
if ((o[i])&(i%15
vovan++;
}
}
if (dem<5) dem=dem-vovan;
if (dem>=dodai)
{
dodai=dem;
tg.dodai=dem;
tg.toado=k;
tg.loai=false;
}
vovan=0;
dem=1;
d=15;
i=k+d;
if (i<15*15)
{
while ((x[i])&(i/15>=k/15))
{
dem++;
i=i+d;
if (i>=15*15) { vovan++; break; }
if ((o[i])&(i/15>=k/15))
vovan++;
}
}
i=k-d;
if (i>=0)
{
while ((x[i])&(i/15
{
dem++;
i=i-d;
if (i<0) { vovan++; break; }
if ((o[i])&(i/15
vovan++;
}
}
if (dem<5) dem=dem-vovan;
if (dem>=dodai)
{
dodai=dem;
tg.dodai=dem;
tg.toado=k;
tg.loai=false;
}
vovan=0;
dem=1;
d=16;
i=k+d;
if (i<15*15)
{
while ((x[i])&(i%15>=k%15))
{
dem++;
i=i+d;
if (i>=15*15) { vovan++; break; }
if ((o[i])&(i%15>=k%15))
vovan++;
}
}
i=k-d;
if (i>=0)
{
while ((x[i])&(i%15
{
dem++;
i=i-d;
if (i<0) { vovan++; break; }
if ((o[i])&(i%15
vovan++;
}
}
if (dem<5) dem=dem-vovan;
if (dem>=dodai)
{
dodai=dem;
tg.dodai=dem;
tg.toado=k;
tg.loai=false;
}
vovan=0;
dem=1;
d=14;
i=k+d;
if (i<15*15)
{
while ((x[i])&(i%15<=k%15))
{
dem++;
i=i+d;
if (i>=15*15) { vovan++; break; }
if ((o[i])&(i%15<=k%15))
vovan++;
}
}
i=k-d;
if (i>=0)
{
while ((x[i])&(i%15>k%15))
{
dem++;
i=i-d;
if (i<0) { vovan++; break; }
if ((o[i])&(i%15>k%15))
vovan++;
}
}
if (dem<5) dem=dem-vovan;
if (dem>=dodai)
{
dodai=dem;
tg.dodai=dem;
tg.toado=k;
tg.loai=false;
}
return(tg);
}
public Boolean win(Boolean[] a,int k)
{
int d,dem=0;
d=1;
int i=k;
while ((a[i])&(i%15>=k%15))
{
dem++;
i=i+d;
if (i>=15*15) { break; }
}
i=k-d;
if (i>=0)
{
while ((a[i])&(i%15
{
dem++;
i=i-d;
if (i<0) { break; }
}
}
if (dem==5) return(true);
dem=0;
d=15;
i=k;
while ((a[i])&(i/15>=k/15))
{
dem++;
i=i+d;
if (i>=15*15) { break; }
}
i=k-d;
if (i>=0)
{
while ((a[i])&(i/15
{
dem++;
i=i-d;
if (i<0) { break; }
}
}
if (dem==5) return(true);
dem=0;
d=16;
i=k;
while ((a[i])&(i%15>=k%15))
{
dem++;
i=i+d;
if (i>=15*15) { break; }
}
i=k-d;
if (i>=0)
{
while ((a[i])&(i%15
{
dem++;
i=i-d;
if (i<0) { break; }
}
}
if (dem==5) return(true);
dem=0;
d=14;
i=k;
while ((a[i])&(i%15<=k%15))
{
dem++;
i=i+d;
if (i>=15*15) break;
}
i=k-d;
if (i>=0)
{
while ((a[i])&(i%15>k%15))
{
dem++;
i=i-d;
if (i<0) break;
}
}
if (dem==5) return(true);
return(false);
}
}