Ejemplo n.º 1
0
    public static int[] GetSight(SnakeController sc)
    {
        GameMaster mygm = GetInstance();

        int[] sight = new int[0];

        int     dir = (int)sc.compas;
        Vector2 v2  = sc.transform.position;
        Vector2 v2a = (Vector2)mygm.a.transform.position - v2;

        if (PlayerPrefs.GetInt("idvision") == 1)
        {
            //Checks for 3 directional positions (empty/wall/apple)
            sight = new int[3];
            Vector2[] v2Possible = new Vector2[4];

            //Add apple to board
            Vector2 v2apple = AdjustPosToBoard((Vector2)mygm.a.transform.position);
            mygm.board[(int)v2apple.x, (int)v2apple.y] = 2;

            v2Possible[0] = v2 + new Vector2(0, 1);
            v2Possible[1] = v2 + new Vector2(1, 0);
            v2Possible[2] = v2 + new Vector2(0, -1);
            v2Possible[3] = v2 + new Vector2(-1, 0);

            for (int i = 0, m = dir - 1; i < 3; i++, m++)
            {
                sight[i] = mygm.CheckSurrounding(v2Possible[SnakeController.Mod(m, 4)]);
                DebugDrawLine(sight[i], v2, v2Possible[SnakeController.Mod(m, 4)]);
            }
        }
        else if (PlayerPrefs.GetInt("idvision") == 2)
        {
            //Checks for 3 directional positions (empty/wall) & apple
            sight = new int[5];
            Vector2[] v2Possible = new Vector2[4];

            v2Possible[0] = v2 + new Vector2(0, 1);
            v2Possible[1] = v2 + new Vector2(1, 0);
            v2Possible[2] = v2 + new Vector2(0, -1);
            v2Possible[3] = v2 + new Vector2(-1, 0);

            for (int i = 0, m = dir - 1; i < 3; i++, m++)
            {
                sight[i] = mygm.CheckSurrounding(v2Possible[SnakeController.Mod(m, 4)]);
                DebugDrawLine(sight[i], v2, v2Possible[SnakeController.Mod(m, 4)]);
            }

            v2a      = GetAppleSight(dir, v2a);
            sight[3] = (int)v2a.x;
            sight[4] = (int)v2a.y;
        }
        else if (PlayerPrefs.GetInt("idvision") == 3)
        {
            //Checks for 3 directional positions (empty/wall/apple) & apple
            sight = new int[5];
            Vector2[] v2Possible = new Vector2[4];

            //Add apple to board
            Vector2 v2apple = AdjustPosToBoard((Vector2)mygm.a.transform.position);
            mygm.board[(int)v2apple.x, (int)v2apple.y] = 2;

            v2Possible[0] = v2 + new Vector2(0, 1);
            v2Possible[1] = v2 + new Vector2(1, 0);
            v2Possible[2] = v2 + new Vector2(0, -1);
            v2Possible[3] = v2 + new Vector2(-1, 0);

            for (int i = 0, m = dir - 1; i < 3; i++, m++)
            {
                sight[i] = mygm.CheckSurrounding(v2Possible[SnakeController.Mod(m, 4)]);
                DebugDrawLine(sight[i], v2, v2Possible[SnakeController.Mod(m, 4)]);
            }

            v2a      = GetAppleSight(dir, v2a);
            sight[3] = (int)v2a.x;
            sight[4] = (int)v2a.y;
        }
        else if (PlayerPrefs.GetInt("idvision") == 4)
        {
            //Checks for 7 directional positions (empty/wall/apple)
            sight = new int[7];
            Vector2[] v2Possible = new Vector2[8];

            //Add apple to board
            Vector2 v2apple = AdjustPosToBoard((Vector2)mygm.a.transform.position);
            mygm.board[(int)v2apple.x, (int)v2apple.y] = 2;

            v2Possible[0] = v2 + new Vector2(0, 1);
            v2Possible[1] = v2 + new Vector2(1, 1);
            v2Possible[2] = v2 + new Vector2(1, 0);
            v2Possible[3] = v2 + new Vector2(1, -1);
            v2Possible[4] = v2 + new Vector2(0, -1);
            v2Possible[5] = v2 + new Vector2(-1, -1);
            v2Possible[6] = v2 + new Vector2(-1, 0);
            v2Possible[7] = v2 + new Vector2(-1, 1);

            for (int i = 0, m = 2 * (dir - 1) - 1; i < 7; i++, m++)
            {
                sight[i] = mygm.CheckSurrounding(v2Possible[SnakeController.Mod(m, 8)]);
                DebugDrawLine(sight[i], v2, v2Possible[SnakeController.Mod(m, 8)]);
            }
        }
        else if (PlayerPrefs.GetInt("idvision") == 5)
        {
            //Checks for 7 directional positions (empty/wall) & apple
            sight = new int[9];
            Vector2[] v2Possible = new Vector2[9];

            v2Possible[0] = v2 + new Vector2(0, 1);
            v2Possible[1] = v2 + new Vector2(1, 1);
            v2Possible[2] = v2 + new Vector2(1, 0);
            v2Possible[3] = v2 + new Vector2(1, -1);
            v2Possible[4] = v2 + new Vector2(0, -1);
            v2Possible[5] = v2 + new Vector2(-1, -1);
            v2Possible[6] = v2 + new Vector2(-1, 0);
            v2Possible[7] = v2 + new Vector2(-1, 1);

            for (int i = 0, m = 2 * (dir - 1) - 1; i < 7; i++, m++)
            {
                sight[i] = mygm.CheckSurrounding(v2Possible[SnakeController.Mod(m, 8)]);
                DebugDrawLine(sight[i], v2, v2Possible[SnakeController.Mod(m, 8)]);
            }

            v2a      = GetAppleSight(dir, v2a);
            sight[7] = (int)v2a.x;
            sight[8] = (int)v2a.y;
        }
        else if (PlayerPrefs.GetInt("idvision") == 6)
        {
            //Checks for 7 directional positions (empty/wall/apple) & apple
            sight = new int[9];
            Vector2[] v2Possible = new Vector2[9];

            //Add apple to board
            Vector2 v2apple = AdjustPosToBoard((Vector2)mygm.a.transform.position);
            mygm.board[(int)v2apple.x, (int)v2apple.y] = 2;

            v2Possible[0] = v2 + new Vector2(0, 1);
            v2Possible[1] = v2 + new Vector2(1, 1);
            v2Possible[2] = v2 + new Vector2(1, 0);
            v2Possible[3] = v2 + new Vector2(1, -1);
            v2Possible[4] = v2 + new Vector2(0, -1);
            v2Possible[5] = v2 + new Vector2(-1, -1);
            v2Possible[6] = v2 + new Vector2(-1, 0);
            v2Possible[7] = v2 + new Vector2(-1, 1);

            for (int i = 0, m = 2 * (dir - 1) - 1; i < 7; i++, m++)
            {
                sight[i] = mygm.CheckSurrounding(v2Possible[SnakeController.Mod(m, 8)]);
                DebugDrawLine(sight[i], v2, v2Possible[SnakeController.Mod(m, 8)]);
            }

            v2a      = GetAppleSight(dir, v2a);
            sight[7] = (int)v2a.x;
            sight[8] = (int)v2a.y;
        }

        //robot sight
        return(sight);
    }