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

📄 gamematrix.java

📁 手机游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// Decompiled by Jad v1.5.7f. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   GameMatrix.java

package matchit2;

import java.util.Random;

public class GameMatrix
{

    public GameMatrix(int h, int v, int s)
    {
        VSize = 0;
        HSize = 0;
        SeedCount = 0;
        Score1 = 10;
        Score2 = 20;
        Score3 = 50;
        VConn = -10;
        HConn = -11;
        SConn = -10;
        LDConn = -12;
        LUConn = -13;
        RDConn = -14;
        RUConn = -15;
        if((v * h) % 2 == 0)
        {
            VSize = v;
            HSize = h;
            SeedCount = s;
            initMatrix(HSize, VSize);
        }
    }

    public void end()
    {
        matrix = null;
    }

    public int getAt(int x, int y)
    {
        if(x > HSize || x < 1 || y > VSize || y < 1)
            return -1;
        else
            return matrix[x - 1][y - 1];
    }

    public int setAt(int x, int y, int b)
    {
        if(x > HSize || x < 1 || y > VSize || y < 1)
        {
            return 0;
        } else
        {
            matrix[x - 1][y - 1] = b;
            return 1;
        }
    }

    public void shuffleMatrix()
    {
        Random r = new Random();
        clearTrace();
        for(int x = 0; x < HSize; x++)
        {
            for(int y = 0; y < VSize; y++)
            {
                int xx = Math.abs(r.nextInt()) % HSize;
                int yy = Math.abs(r.nextInt()) % VSize;
                int b = matrix[x][y];
                matrix[x][y] = matrix[xx][yy];
                matrix[xx][yy] = b;
            }

        }

    }

    public void clearTrace()
    {
        for(int x = 0; x < HSize; x++)
        {
            for(int y = 0; y < VSize; y++)
                if(matrix[x][y] < -1)
                    matrix[x][y] = -1;

        }

    }

    public int judge(int x, int y, int xx, int yy, boolean mark)
    {
        x--;
        y--;
        xx--;
        yy--;
        if(x == xx && y == yy)
            return 0;
        if(x < 0 || x > HSize - 1 || y < 0 || y > VSize - 1 || xx < 0 || xx > HSize - 1 || yy < 0 || yy > VSize - 1)
            return 0;
        if(matrix[x][y] != matrix[xx][yy])
            return 0;
        if(matrix[x][y] < 0 || matrix[xx][yy] < 0)
            return 0;
        int i;
        int a;
        if(x == xx)
        {
            if(y > yy)
            {
                int c = y;
                y = yy;
                yy = c;
            }
            a = 0;
            for(i = y + 1; i < yy; i++)
                a += matrix[x][i];

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

                return Score1;
            }
        }
        if(y == yy)
        {
            if(x > xx)
            {
                int c = x;
                x = xx;
                xx = c;
            }
            a = 0;
            for(i = x + 1; i < xx; i++)
                a += matrix[i][y];

            if(-a == xx - x - 1)
            {
                if(mark)
                    for(i = x + 1; i < xx; i++)
                        matrix[i][y] = HConn;

                return Score1;
            }
        }
        a = 0;
        if(x > xx)
        {
            int c = x;
            x = xx;
            xx = c;
            c = y;
            y = yy;
            yy = c;
        }
        if(y < yy)
        {
            for(i = x + 1; i <= xx; i++)
                a += matrix[i][y];

            for(i = y + 1; i < yy; i++)
                a += matrix[xx][i];

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

                    for(i = y + 1; i < yy; i++)
                        matrix[xx][i] = VConn;

                    matrix[xx][y] = LDConn;
                }
                return Score2;
            }
            a = 0;
            for(i = x; i < xx; i++)
                a += matrix[i][yy];

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

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

                    for(i = y + 1; i < yy; i++)
                        matrix[x][i] = VConn;

                    matrix[x][yy] = RUConn;
                }
                return Score2;
            }
        } else
        {
            for(i = x + 1; i <= xx; i++)
                a += matrix[i][y];

            for(i = yy + 1; i < y; i++)
                a += matrix[xx][i];

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

                    for(i = yy + 1; i < y; i++)
                        matrix[xx][i] = VConn;

                    matrix[xx][y] = LUConn;
                }
                return Score2;
            }
            a = 0;
            for(i = x; i < xx; i++)
                a += matrix[i][yy];

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

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

                    for(i = yy + 1; i < y; i++)
                        matrix[x][i] = VConn;

                    matrix[x][yy] = RDConn;
                }
                return Score2;
            }
        }
        int y1;
        int y2;
        if(y > yy)
        {
            y1 = yy;
            y2 = y;
        } else
        {
            y1 = y;
            y2 = yy;
        }
        i = x;
        for(int s = 0; Math.abs(s) < HSize;)
        {
            s = -s;
            if(s >= 0)
                s++;
            i = x + s;
            if(i < HSize && i >= 0)
            {
                a = 0;
                for(int j = y1; j <= y2; j++)
                    a += matrix[i][j];

                if(-a == (y2 - y1) + 1)
                {
                    a = 0;
                    if(x > i)
                    {
                        for(int c = i; c < x; c++)
                            a += matrix[c][y];

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

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

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

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

                                    if(y < yy)
                                        matrix[i][y] = RDConn;
                                    else
                                        matrix[i][y] = RUConn;
                                } else
                                {
                                    for(int c = x + 1; c <= i; c++)
                                        matrix[c][y] = HConn;

                                    if(y < yy)
                                        matrix[i][y] = LDConn;
                                    else
                                        matrix[i][y] = LUConn;
                                }
                                if(xx > i)
                                {
                                    for(int c = i; c < xx; c++)
                                        matrix[c][yy] = HConn;

                                    if(y < yy)
                                        matrix[i][yy] = RUConn;
                                    else
                                        matrix[i][yy] = RDConn;
                                } else
                                {
                                    for(int c = xx + 1; c <= i; c++)
                                        matrix[c][yy] = HConn;

                                    if(y < yy)
                                        matrix[i][yy] = LUConn;
                                    else
                                        matrix[i][yy] = LDConn;
                                }
                                for(int c = y1 + 1; c < y2; c++)
                                    matrix[i][c] = VConn;

                            }
                            return Score3;
                        }
                    }
                }
            }
        }

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

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

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

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

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

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

            if(-a == HSize - xx - 1)
            {
                if(mark)
                {
                    for(i = x + 1; i < HSize; i++)
                        matrix[i][y] = HConn;

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

                    if(xx == HSize - 1)
                        matrix[xx][yy] = -matrix[xx][yy] + SConn + HConn * 100;
                }
                return Score3;
            }
        }
        int x1;
        int x2;
        if(x > xx)
        {
            x1 = xx;
            x2 = x;
        } else
        {
            x1 = x;
            x2 = xx;
        }
        i = y;
        for(int s = 0; Math.abs(s) < VSize;)
        {
            s = -s;
            if(s >= 0)
                s++;
            i = y + s;
            if(i < VSize && i >= 0)
            {
                a = 0;
                for(int j = x1; j <= x2; j++)
                    a += matrix[j][i];

                if(-a == (x2 - x1) + 1)
                {
                    a = 0;
                    if(y > i)
                    {
                        for(int c = i; c < y; c++)
                            a += matrix[x][c];

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

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

⌨️ 快捷键说明

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