⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 caroauto.java

📁 I originally wrote this program as an exercise for learning JAVE. Gomoku game is well-known in many
💻 JAVA
字号:
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)%(sodiem+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<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;
        }
        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<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;
        }
        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<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;
        }
        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<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;
        }
        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<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;
        }
        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<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;
        }
        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<k%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<k/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<k%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);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -