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

📄 five.java

📁 五子棋的源码。自己刚写的。算法还不错。不过意铺待改进。
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
            x = x - displace_x;
        }

        if(count >= 5)
        {
            GameState = 3;
            winner = check;
            ThreadStart();
        } else
        if(direction != -1)
            WinCheck2();
    }

    public void ReStart()
    {
        for(int i = 0; i < length; i++)
        {
            for(int j = 0; j < length; j++)
            {
                grids[i][j].Initial();
                powerP[i][j] = 0;
                powerC[i][j] = 0;
                flag[i][j] = "0";
                comboP[i][j] = 0;
                comboC[i][j] = 0;
            }

        }

        winner = 0;
        steps.clear();
        GameState = 2;
        StepCount = 0;
        dialog.setVisible(turn);
    }

    public void FiveRandom()
    {
        displace_y = 0;
        do
        {
            displace_x = (int)(Math.random() * 8D);
            x = locX + dir[displace_x][0];
            y = locY + dir[displace_x][1];
            if(!dir2[displace_x])
            {
                displace_y = displace_y + 1;
                dir2[displace_x] = true;
            }
        } while((x < 0 || x >= length || y < 0 || y >= length || grid[x][y] != 0) && displace_y < 8);
        for(int i = 0; i < 8; i++)
            dir2[i] = false;

        if(x >= 0 && x < length && y >= 0 && y < length && grid[x][y] == 0)
            setMark(x, y);
        else
            FiveRandom2();
    }

    public void FiveRandom2()
    {
        do
        {
            x = (int)(Math.random() * (double)length);
            y = (int)(Math.random() * (double)length);
        } while(grid[x][y] != 0);
        setMark(x, y);
    }

    public void FiveAI()
    {
        for(int i = 0; i < length; i++)
        {
            for(int j = 0; j < length; j++)
            {
                if(flag[i][j] != "0")
                    continue;
                if(j + 4 <= boarder)
                {
                    line = (new StringBuilder()).append("X").append(flag[i][j + 1]).append(flag[i][j + 2]).append(flag[i][j + 3]).append(flag[i][j + 4]).toString();
                    isEqual(i, j, line);
                }
                if(j - 1 >= 0 && j + 3 <= boarder)
                {
                    line = (new StringBuilder()).append(flag[i][j - 1]).append("X").append(flag[i][j + 1]).append(flag[i][j + 2]).append(flag[i][j + 3]).toString();
                    isEqual(i, j, line);
                }
                if(j - 2 >= 0 && j + 2 <= boarder)
                {
                    line = (new StringBuilder()).append(flag[i][j - 2]).append(flag[i][j - 1]).append("X").append(flag[i][j + 1]).append(flag[i][j + 2]).toString();
                    isEqual(i, j, line);
                }
                if(i + 4 <= boarder)
                {
                    line = (new StringBuilder()).append("X").append(flag[i + 1][j]).append(flag[i + 2][j]).append(flag[i + 3][j]).append(flag[i + 4][j]).toString();
                    isEqual(i, j, line);
                }
                if(i - 1 >= 0 && i + 3 <= boarder && !turn)
                {
                    line = (new StringBuilder()).append(flag[i - 1][j]).append("X").append(flag[i + 1][j]).append(flag[i + 2][j]).append(flag[i + 3][j]).toString();
                    isEqual(i, j, line);
                }
                if(i - 2 >= 0 && i + 2 <= boarder)
                {
                    line = (new StringBuilder()).append(flag[i - 2][j]).append(flag[i - 1][j]).append("X").append(flag[i + 1][j]).append(flag[i + 2][j]).toString();
                    isEqual(i, j, line);
                }
                if(i - 4 >= 0)
                {
                    line = (new StringBuilder()).append("X").append(flag[i - 1][j]).append(flag[i - 2][j]).append(flag[i - 3][j]).append(flag[i - 4][j]).toString();
                    isEqual(i, j, line);
                }
                if(i + 1 <= boarder && i - 3 >= 0)
                {
                    line = (new StringBuilder()).append(flag[i + 1][j]).append("X").append(flag[i - 1][j]).append(flag[i - 2][j]).append(flag[i - 3][j]).toString();
                    isEqual(i, j, line);
                }
                if(i + 2 <= boarder && i - 2 >= 0)
                {
                    line = (new StringBuilder()).append(flag[i + 2][j]).append(flag[i + 1][j]).append("X").append(flag[i - 1][j]).append(flag[i - 2][j]).toString();
                    isEqual(i, j, line);
                }
                if(j - 4 >= 0)
                {
                    line = (new StringBuilder()).append("X").append(flag[i][j - 1]).append(flag[i][j - 2]).append(flag[i][j - 3]).append(flag[i][j - 4]).toString();
                    isEqual(i, j, line);
                }
                if(j + 1 <= boarder && j - 3 >= 0)
                {
                    line = (new StringBuilder()).append(flag[i][j + 1]).append("X").append(flag[i][j - 1]).append(flag[i][j - 2]).append(flag[i][j - 3]).toString();
                    isEqual(i, j, line);
                }
                if(j + 2 <= boarder && j - 3 >= 0)
                {
                    line = (new StringBuilder()).append(flag[i][j + 2]).append(flag[i][j + 1]).append("X").append(flag[i][j - 1]).append(flag[i][j - 2]).toString();
                    isEqual(i, j, line);
                }
                if(i - 4 >= 0 && j + 4 <= boarder)
                {
                    line = (new StringBuilder()).append("X").append(flag[i - 1][j + 1]).append(flag[i - 2][j + 2]).append(flag[i - 3][j + 3]).append(flag[i - 4][j + 4]).toString();
                    isEqual(i, j, line);
                }
                if(i + 1 <= length - 1 && j - 1 >= 0 && i - 3 >= 0 && j + 3 <= boarder)
                {
                    line = (new StringBuilder()).append(flag[i + 1][j - 1]).append("X").append(flag[i - 1][j + 1]).append(flag[i - 2][j + 2]).append(flag[i - 3][j + 3]).toString();
                    isEqual(i, j, line);
                }
                if(i + 2 <= length - 1 && j - 2 >= 0 && i - 2 >= 0 && j + 2 <= boarder)
                {
                    line = (new StringBuilder()).append(flag[i + 2][j - 2]).append(flag[i + 1][j - 1]).append("X").append(flag[i - 1][j + 1]).append(flag[i - 2][j + 2]).toString();
                    isEqual(i, j, line);
                }
                if(i - 4 >= 0 && j - 4 >= 0)
                {
                    line = (new StringBuilder()).append("X").append(flag[i - 1][j - 1]).append(flag[i - 2][j - 2]).append(flag[i - 3][j - 3]).append(flag[i - 4][j - 4]).toString();
                    isEqual(i, j, line);
                }
                if(i + 1 <= boarder && j + 1 <= boarder && i - 3 >= 0 && j - 3 >= 0)
                {
                    line = (new StringBuilder()).append(flag[i + 1][j + 1]).append("X").append(flag[i - 1][j - 1]).append(flag[i - 2][j - 2]).append(flag[i - 3][j - 3]).toString();
                    isEqual(i, j, line);
                }
                if(i + 2 <= boarder && j + 2 <= boarder && i - 2 >= 0 && j - 2 >= 0)
                {
                    line = (new StringBuilder()).append(flag[i + 2][j + 2]).append(flag[i + 1][j + 1]).append("X").append(flag[i - 1][j - 1]).append(flag[i - 2][j - 2]).toString();
                    isEqual(i, j, line);
                }
                if(i + 4 <= boarder && j + 4 <= boarder)
                {
                    line = (new StringBuilder()).append("X").append(flag[i + 1][j + 1]).append(flag[i + 2][j + 2]).append(flag[i + 3][j + 3]).append(flag[i + 4][j + 4]).toString();
                    isEqual(i, j, line);
                }
                if(i - 1 >= 0 && j - 1 >= 0 && i + 3 <= boarder && j + 3 <= boarder)
                {
                    line = (new StringBuilder()).append(flag[i - 1][j - 1]).append("X").append(flag[i + 1][j + 1]).append(flag[i + 2][j + 2]).append(flag[i + 3][j + 3]).toString();
                    isEqual(i, j, line);
                }
                if(i - 2 >= 0 && j - 2 >= 0 && i + 2 <= boarder && j + 2 <= boarder)
                {
                    line = (new StringBuilder()).append(flag[i - 2][j - 2]).append(flag[i - 1][j - 1]).append("X").append(flag[i + 1][j + 1]).append(flag[i + 2][j + 2]).toString();
                    isEqual(i, j, line);
                }
                if(i + 4 <= boarder && j - 4 >= 0)
                {
                    line = (new StringBuilder()).append("X").append(flag[i + 1][j - 1]).append(flag[i + 2][j - 2]).append(flag[i + 3][j - 3]).append(flag[i + 4][j - 4]).toString();
                    isEqual(i, j, line);
                }
                if(i - 1 >= 0 && j + 1 <= boarder && i + 3 <= boarder && j - 3 >= 0)
                {
                    line = (new StringBuilder()).append(flag[i - 1][j + 1]).append("X").append(flag[i + 1][j - 1]).append(flag[i + 2][j - 2]).append(flag[i + 3][j - 3]).toString();
                    isEqual(i, j, line);
                }
                if(i - 2 >= 0 && j + 2 <= boarder && i + 2 <= boarder && j - 2 >= 0)
                {
                    line = (new StringBuilder()).append(flag[i - 2][j + 2]).append(flag[i - 1][j + 1]).append("X").append(flag[i + 1][j - 1]).append(flag[i + 2][j - 2]).toString();
                    isEqual(i, j, line);
                }
                if(j + 5 <= boarder)
                {
                    line = (new StringBuilder()).append("X").append(flag[i][j + 1]).append(flag[i][j + 2]).append(flag[i][j + 3]).append(flag[i][j + 4]).append(flag[i][j + 5]).toString();
                    isEqual(i, j, line);
                }
                if(j + 4 <= boarder && j - 1 >= 0)
                {
                    line = (new StringBuilder()).append(flag[i][j - 1]).append("X").append(flag[i][j + 1]).append(flag[i][j + 2]).append(flag[i][j + 3]).append(flag[i][j + 4]).toString();
                    isEqual(i, j, line);
                }
                if(j - 2 >= 0 && j + 3 <= boarder)
                {
                    line = (new StringBuilder()).append(flag[i][j - 2]).append(flag[i][j - 1]).append("X").append(flag[i][j + 1]).append(flag[i][j + 2]).append(flag[i][j + 3]).toString();
                    isEqual(i, j, line);
                }
                if(i + 5 <= boarder)
                {
                    line = (new StringBuilder()).append("X").append(flag[i + 1][j]).append(flag[i + 2][j]).append(flag[i + 3][j]).append(flag[i + 4][j]).append(flag[i + 5][j]).toString();
                    isEqual(i, j, line);
                }
                if(i + 4 <= boarder && i - 1 >= 0)
                {
                    line = (new StringBuilder()).append(flag[i - 1][j]).append("X").append(flag[i + 1][j]).append(flag[i + 2][j]).append(flag[i + 3][j]).append(flag[i + 4][j]).toString();
                    isEqual(i, j, line);
                }
                if(i - 2 >= 0 && i + 3 <= boarder)
                {
                    line = (new StringBuilder()).append(flag[i - 2][j]).append(flag[i - 1][j]).append("X").append(flag[i + 1][j]).append(flag[i + 2][j]).append(flag[i + 3][j]).toString();
                    isEqual(i, j, line);
                }
                if(i - 5 >= 0)
                {
                    line = (new StringBuilder()).append("X").append(flag[i - 1][j]).append(flag[i - 2][j]).append(flag[i - 3][j]).append(flag[i - 4][j]).append(flag[i - 5][j]).toString();
                    isEqual(i, j, line);
                }
                if(i - 4 >= 0 && i + 1 <= boarder)
                {
                    line = (new StringBuilder()).append(flag[i + 1][j]).append("X").append(flag[i - 1][j]).append(flag[i - 2][j]).append(flag[i - 3][j]).append(flag[i - 4][j]).toString();
                    isEqual(i, j, line);
                }
                if(i + 2 <= boarder && i - 3 >= 0)
                {
                    line = (new StringBuilder()).append(flag[i + 2][j]).append(flag[i + 1][j]).append("X").append(flag[i - 1][j]).append(flag[i - 2][j]).append(flag[i - 3][j]).toString();
                    isEqual(i, j, line);
                }
                if(j - 5 >= 0)
                {
                    line = (new StringBuilder()).append("X").append(flag[i][j - 1]).append(flag[i][j - 2]).append(flag[i][j - 3]).append(flag[i][j - 4]).append(flag[i][j - 5]).toString();
                    isEqual(i, j, line);
                }
                if(j - 4 >= 0 && j + 1 <= length - 1)
                {
                    line = (new StringBuilder()).append(flag[i][j + 1]).append("X").append(flag[i][j - 1]).append(flag[i][j - 2]).append(flag[i][j - 3]).append(flag[i][j - 4]).toString();
                    isEqual(i, j, line);
                }
                if(j + 2 <= boarder && j - 3 >= 0)
                {
                    line = (new StringBuilder()).append(flag[i][j + 2]).append(flag[i][j + 1]).append("X").append(flag[i][j - 1]).append(flag[i][j - 2]).append(flag[i][j - 3]).toString();
                    isEqual(i, j, line);
                }
                if(i - 5 >= 0 && j + 5 <= boarder)
                {
                    line = (new StringBuilder()).append("X").append(flag[i - 1][j + 1]).append(flag[i - 2][j + 2]).append(flag[i - 3][j + 3]).append(flag[i - 4][j + 4]).append(flag[i - 5][j + 5]).toString();
                    isEqual(i, j, line);
                }
                if(i - 4 >= 0 && j + 4 <= boarder && i + 1 <= boarder && j - 1 >= 0)
                {
                    line = (new StringBuilder()).append(flag[i + 1][j - 1]).append("X").append(flag[i - 1][j + 1]).append(flag[i - 2][j + 2]).append(flag[i - 3][j + 3]).append(flag[i - 4][j + 4]).toString();
                    isEqual(i, j, line);
                }
                if(i + 2 <= boarder && j - 2 >= 0 && i - 3 >= 0 && j + 3 <= boarder)
                {
                    line = (new StringBuilder()).append(flag[i + 2][j - 2]).append(flag[i + 1][j - 1]).append("X").append(flag[i - 1][j + 1]).append(flag[i - 2][j + 2]).append(flag[i - 3][j + 3]).toString();
                    isEqual(i, j, line);
                }
                if(i - 5 >= 0 && j - 5 >= 0)
                {
                    line = (new StringBuilder()).append("X").append(flag[i - 1][j - 1]).append(flag[i - 2][j - 2]).append(flag[i - 3][j - 3]).append(flag[i - 4][j - 4]).append(flag[i - 5][j - 5]).toString();
                    isEqual(i, j, line);
                }
                if(i - 4 >= 0 && j - 4 >= 0 && i + 1 <= boarder && j + 1 <= boarder)
                {
                    line = (new StringBuilder()).append(flag[i + 1][j + 1]).append("X").append(flag[i - 1][j - 1]).append(flag[i - 2][j - 2]).append(flag[i - 3][j - 3]).append(flag[i - 4][j - 4]).toString();
                    isEqual(i, j, line);
                }
                if(j + 2 <= boarder && i + 2 <= boarder && i - 3 >= 0 && j - 3 >= 0)
                {
                    line = (new StringBuilder()).append(flag[i + 2][j + 2]).append(flag[i + 1][j + 1]).append("X").append(flag[i - 1][j - 1]).append(flag[i - 2][j - 2]).append(flag[i - 3][j - 3]).toString();
                    isEqual(i, j, line);
                }
                if(i + 5 <= boarder && j + 5 <= boarder)
                {
                    line = (new StringBuilder()).append("X").append(flag[i + 1][j + 1]).append(flag[i + 2][j + 2]).append(flag[i + 3][j + 3]).append(flag[i + 4][j + 4]).append(flag[i + 5][j + 5]).toString();
                    isEqual(i, j, line);
                }
                if(i + 4 <= boarder && j + 4 <= boarder && i - 1 >= 0 && j - 1 >= 0)
                {
                    line = (new StringBuilder()).append(flag[i - 1][j - 1]).append("X").append(flag[i + 1][j + 1]).append(flag[i + 2][j + 2]).append(flag[i + 3][j + 3]).append(flag[i + 4][j + 4]).toString();
                    isEqual(i, j, line);
                }
                if(i - 2 >= 0 && j - 2 >= 0 && i + 3 <= boarder && j + 3 <= boarder)
                {
                    line = (new StringBuilder()).append(flag[i - 2][j - 2]).append(flag[i - 1][j - 1]).append("X").append(flag[i + 1][j + 1]).append(flag[i + 2][j + 2]).append(flag[i + 3][j + 3]).toString();
                    isEqual(i, j, line);
                }
                if(i + 5 <= boarder && j - 5 >= 0)
                {
                    line = (new StringBuilder()).append("X").append(flag[i + 1][j - 1]).append(flag[i + 2][j - 2]).append(flag[i + 3][j - 3]).append(flag[i + 4][j - 4]).append(flag[i + 5][j - 5]).toString();
                    isEqual(i, j, line);
                }
                if(i + 4 <= boarder && j - 4 >= 0 && i - 1 >= 0 && j + 1 <= boarder)
                {
                    line = (new StringBuilder()).append(flag[i - 1][j + 1]).append("X").append(flag[i + 1][j - 1]).append(flag[i + 2][j - 2]).append(flag[i + 3][j - 3]).append(flag[i + 4][j - 4]).toString();
                    isEqual(i, j, line);
                }
                if(i - 2 >= 0 && j + 2 <= boarder && i + 3 <= boarder && j - 3 >= 0)
                {
                    line = (new StringBuilder()).append(flag[i - 2][j + 2]).append(flag[i - 1][j + 1]).append("X").append(flag[i + 1][j - 1]).append(flag[i + 2][j - 2]).append(flag[i + 3][j - 3]).toString();
                    isEqual(i, j, line);
                }

⌨️ 快捷键说明

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