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

📄 gamematrix.java

📁 手机游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

                        } else
                        {
                            for(int c = yy + 1; c <= i; c++)
                                a += matrix[xx][c];

                        }
                        if(-a == Math.abs(yy - i))
                        {
                            if(mark)
                            {
                                if(y > i)
                                {
                                    for(int c = i; c < y; c++)
                                        matrix[x][c] = VConn;

                                    if(x < xx)
                                        matrix[x][i] = RDConn;
                                    else
                                        matrix[x][i] = LDConn;
                                } else
                                {
                                    for(int c = y + 1; c <= i; c++)
                                        matrix[x][c] = VConn;

                                    if(x < xx)
                                        matrix[x][i] = RUConn;
                                    else
                                        matrix[x][i] = LUConn;
                                }
                                if(yy > i)
                                {
                                    for(int c = i; c < yy; c++)
                                        matrix[xx][c] = VConn;

                                    if(x < xx)
                                        matrix[xx][i] = LDConn;
                                    else
                                        matrix[xx][i] = RDConn;
                                } else
                                {
                                    for(int c = yy + 1; c <= i; c++)
                                        matrix[xx][c] = VConn;

                                    if(x < xx)
                                        matrix[xx][i] = LUConn;
                                    else
                                        matrix[xx][i] = RUConn;
                                }
                                for(int c = x1 + 1; c < x2; c++)
                                    matrix[c][i] = HConn;

                            }
                            return Score3;
                        }
                    }
                }
            }
        }

        a = 0;
        for(i = 0; i < y; i++)
            a += matrix[x][i];

        if(-a == y)
        {
            a = 0;
            for(i = 0; i < yy; i++)
                a += matrix[xx][i];

            if(-a == yy)
            {
                if(mark)
                {
                    for(i = 0; i < y; i++)
                        matrix[x][i] = VConn;

                    if(y == 0)
                        matrix[x][0] = -matrix[x][0] + SConn + VConn * 100;
                    for(i = 0; i < yy; i++)
                        matrix[xx][i] = VConn;

                    if(yy == 0)
                        matrix[xx][0] = -matrix[xx][0] + SConn + VConn * 100;
                }
                return Score3;
            }
        }
        a = 0;
        for(i = y + 1; i < VSize; i++)
            a += matrix[x][i];

        if(-a == VSize - y - 1)
        {
            a = 0;
            for(i = yy + 1; i < VSize; i++)
                a += matrix[xx][i];

            if(-a == VSize - yy - 1)
            {
                if(mark)
                {
                    for(i = y + 1; i < VSize; i++)
                        matrix[x][i] = VConn;

                    if(y == VSize - 1)
                        matrix[x][y] = -matrix[x][y] + SConn + VConn * 100;
                    for(i = yy + 1; i < VSize; i++)
                        matrix[xx][i] = VConn;

                    if(yy == VSize - 1)
                        matrix[xx][yy] = -matrix[xx][yy] + SConn + VConn * 100;
                }
                return Score3;
            }
        }
        return 0;
    }

    public void initMatrix(int hs, int vs)
    {
        HSize = hs;
        VSize = vs;
        matrix = new int[HSize][VSize];
        int j = 0;
        int b = 0;
        for(int x = 0; x < HSize; x++)
        {
            for(int y = 0; y < VSize; y++)
            {
                j = 1 - j;
                if(j == 1)
                    b = ((x * HSize + y) / 2) % SeedCount;
                matrix[x][y] = b;
            }

        }

        do
            shuffleMatrix();
        while(find() == 0);
    }

    public int find()
    {
        for(int i = 0; i < HSize * VSize; i++)
        {
            for(int j = i + 1; j < HSize * VSize; j++)
                if(judge(i % HSize + 1, i / HSize + 1, j % HSize + 1, j / HSize + 1, false) > 0)
                    return i * 1000 + j;

        }

        return 0;
    }

    public int getRest()
    {
        int k = 0;
        for(int x = 0; x < HSize; x++)
        {
            for(int y = 0; y < VSize; y++)
                if(matrix[x][y] >= 0)
                    k++;

        }

        return k;
    }

    private void dropdown()
    {
        for(int x = 0; x < HSize; x++)
        {
            for(int y = 0; y < VSize; y++)
                if(matrix[x][y] < 0)
                {
                    for(int i = y; i > 0; i--)
                        matrix[x][i] = matrix[x][i - 1];

                    matrix[x][0] = -1;
                }

        }

    }

    private void leftdownrightup()
    {
        for(int x = 0; x < HSize / 2; x++)
        {
            for(int y = 0; y < VSize; y++)
                if(matrix[x][y] < 0)
                {
                    for(int i = y; i > 0; i--)
                        matrix[x][i] = matrix[x][i - 1];

                    matrix[x][0] = -1;
                }

        }

        for(int x = HSize / 2; x < HSize; x++)
        {
            for(int y = VSize - 1; y >= 0; y--)
                if(matrix[x][y] < 0)
                {
                    for(int i = y; i < VSize - 1; i++)
                        matrix[x][i] = matrix[x][i + 1];

                    matrix[x][VSize - 1] = -1;
                }

        }

    }

    private void goleft()
    {
        for(int y = 0; y < VSize; y++)
        {
            for(int x = HSize - 1; x >= 0; x--)
                if(matrix[x][y] < 0)
                {
                    for(int i = x; i < HSize - 1; i++)
                        matrix[i][y] = matrix[i + 1][y];

                    matrix[HSize - 1][y] = -1;
                }

        }

    }

    private void upleftdownright()
    {
        for(int y = 0; y < VSize / 2; y++)
        {
            for(int x = HSize - 1; x >= 0; x--)
                if(matrix[x][y] < 0)
                {
                    for(int i = x; i < HSize - 1; i++)
                        matrix[i][y] = matrix[i + 1][y];

                    matrix[HSize - 1][y] = -1;
                }

        }

        for(int y = VSize / 2; y < VSize; y++)
        {
            for(int x = 0; x < HSize; x++)
                if(matrix[x][y] < 0)
                {
                    for(int i = x; i > 0; i--)
                        matrix[i][y] = matrix[i - 1][y];

                    matrix[0][y] = -1;
                }

        }

    }

    private void raiseup()
    {
        for(int x = 0; x < HSize; x++)
        {
            for(int y = VSize - 1; y >= 0; y--)
                if(matrix[x][y] < 0)
                {
                    for(int i = y; i < VSize - 1; i++)
                        matrix[x][i] = matrix[x][i + 1];

                    matrix[x][VSize - 1] = -1;
                }

        }

    }

    private void updown()
    {
        for(int x = 0; x < HSize; x++)
        {
            for(int y = VSize / 2 - 1; y >= 0; y--)
                if(matrix[x][y] < 0)
                {
                    for(int i = y; i < VSize / 2 - 1; i++)
                        matrix[x][i] = matrix[x][i + 1];

                    matrix[x][VSize / 2 - 1] = -1;
                }

            for(int y = VSize / 2; y < VSize; y++)
                if(matrix[x][y] < 0)
                {
                    for(int i = y; i > VSize / 2; i--)
                        matrix[x][i] = matrix[x][i - 1];

                    matrix[x][VSize / 2] = -1;
                }

        }

    }

    private void leftright()
    {
        for(int y = 0; y < VSize; y++)
        {
            for(int x = HSize / 2 - 1; x >= 0; x--)
                if(matrix[x][y] < 0)
                {
                    for(int i = x; i < HSize / 2 - 1; i++)
                        matrix[i][y] = matrix[i + 1][y];

                    matrix[HSize / 2 - 1][y] = -1;
                }

            for(int x = HSize / 2; x < HSize; x++)
                if(matrix[x][y] < 0)
                {
                    for(int i = x; i > HSize / 2; i--)
                        matrix[i][y] = matrix[i - 1][y];

                    matrix[HSize / 2][y] = -1;
                }

        }

    }

    private void updowncenter()
    {
        for(int x = 0; x < HSize; x++)
        {
            for(int y = 0; y <= VSize / 2 - 1; y++)
                if(matrix[x][y] < 0)
                {
                    for(int i = y; i > 0; i--)
                        matrix[x][i] = matrix[x][i - 1];

                    matrix[x][0] = -1;
                }

            for(int y = VSize - 1; y >= VSize / 2; y--)
                if(matrix[x][y] < 0)
                {
                    for(int i = y; i < VSize - 1; i++)
                        matrix[x][i] = matrix[x][i + 1];

                    matrix[x][VSize - 1] = -1;
                }

        }

    }

    private void leftrightcenter()
    {
        for(int y = 0; y < VSize; y++)
        {
            for(int x = 0; x <= HSize / 2 - 1; x++)
                if(matrix[x][y] < 0)
                {
                    for(int i = x; i > 0; i--)
                        matrix[i][y] = matrix[i - 1][y];

                    matrix[0][y] = -1;
                }

            for(int x = HSize - 1; x >= HSize / 2; x--)
                if(matrix[x][y] < 0)
                {
                    for(int i = x; i < HSize - 1; i++)
                        matrix[i][y] = matrix[i + 1][y];

                    matrix[HSize - 1][y] = -1;
                }

        }

    }

    public void rearrange(int rnd)
    {
        switch(rnd)
        {
        case 1: // '\001'
            return;

        case 2: // '\002'
            dropdown();
            break;

        case 3: // '\003'
            goleft();
            break;

        case 4: // '\004'
            updown();
            break;

        case 5: // '\005'
            leftright();
            break;

        case 6: // '\006'
            updowncenter();
            break;

        case 7: // '\007'
            leftrightcenter();
            break;

        case 8: // '\b'
            upleftdownright();
            break;

        case 9: // '\t'
            leftdownrightup();
            break;

        case 10: // '\n'
            updown();
            leftright();
            break;

        case 11: // '\013'
            updowncenter();
            leftrightcenter();
            break;
        }
    }

    private int matrix[][];
    private int VSize;
    private int HSize;
    private int SeedCount;
    private int Score1;
    private int Score2;
    private int Score3;
    public int VConn;
    public int HConn;
    public int SConn;
    public int LDConn;
    public int LUConn;
    public int RDConn;
    public int RUConn;
}

⌨️ 快捷键说明

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