예제 #1
0
    void AddSnakeCube()
    {
        float   cubeOffset = config.cubeSize;
        float   scale      = config.cubeSize;
        CubePos cp         = snakeCubes [snakeCubes.Count - 1].GetCubePos();
        float   moveTime   = 0.9f * config.moveInterval;

        SnakeCube sc = Instantiate(snakeCube) as SnakeCube;

        sc.transform.localScale    = new Vector3(scale, scale, scale);
        sc.transform.parent        = GameObject.Find("BasePoint").transform;
        sc.transform.localPosition = cp.ToVec3();
        sc.SetMovePara(cubeOffset, moveTime);
        sc.SetCubePos(cp);
        // Debug.Log ("-----" + cp.x.ToString() + " " + cp.y.ToString() + " "+ cp.z.ToString() + " ");
        cubePosEmpty [cp.GetIndex()] = false;

        sc.SetNextSnakeCube(snakeCubes[snakeCubes.Count - 1]);
        //sc.PreMove ();

        snakeCubes.Add(sc);
    }
예제 #2
0
    void InitSnake()
    {
        int     dim        = config.matrixDim;
        float   cubeOffset = config.cubeSize;
        float   scale      = config.cubeSize;
        CubePos cp         = new CubePos(0, 4, 0);
        float   moveTime   = 0.9f * config.moveInterval;

        if (dim % 2 == 0)
        {
            cp.x = dim / 2;
        }
        else
        {
            cp.x = (dim + 1) / 2;
        }

        float x = cp.x * cubeOffset;
        float y = cp.y * cubeOffset;
        float z = cp.z * cubeOffset;

        CubePos deltaCubePos = new CubePos(0, 1, 0);

        snakeCubeHead = Instantiate(snakeCubeHead) as SnakeCubeHead;
        snakeCubeHead.transform.localScale    = new Vector3(scale, scale, scale);
        snakeCubeHead.transform.parent        = GameObject.Find("BasePoint").transform;
        snakeCubeHead.transform.localPosition = new Vector3(x, y, z);
        snakeCubeHead.Init(cp, deltaCubePos, cubeOffset, moveTime, config.matrixDim + 1, FaceIndex.z_neg);
        cubePosEmpty [cp.GetIndex()] = false;

        InputController ic = GameObject.Find("InputController").GetComponent <InputController>();

        ic.snakeCubeHead = snakeCubeHead;


        for (int i = 3; i > 0; i--)
        {
            y = i * cubeOffset;
            SnakeCube sc = Instantiate(snakeCube) as SnakeCube;
            sc.transform.localScale    = new Vector3(scale, scale, scale);
            sc.transform.parent        = GameObject.Find("BasePoint").transform;
            sc.transform.localPosition = new Vector3(x, y, z);
            sc.SetMovePara(cubeOffset, moveTime);
            CubePos thisCubePos = new CubePos(cp.x, cp.y - 4 + i, cp.z);
            sc.SetCubePos(thisCubePos);
            sc.SetReadyToMove();
            cubePosEmpty [thisCubePos.GetIndex()] = false;


            if (snakeCubes.Count == 0)
            {
                sc.SetNextSnakeCube(snakeCubeHead);
            }
            else
            {
                sc.SetNextSnakeCube(snakeCubes[snakeCubes.Count - 1]);
            }

            snakeCubes.Add(sc);
        }
    }
예제 #3
0
        public void snakeCubeTest()
        {
            var s = new SnakeCube();
            Func <string, char> parse = char.Parse;
            var board    = @"[[ , , ,_,_,_, , , , , , ],
[ , , ,_,_,_, , , , , , ],
[ , , ,_,_,_, , , , , , ],
[_,_,_,_,_,_,_,_,_,_,_,_],
[_,_,*,*,>,_,o,_,_,_,_,_],
[_,_,_,_,_,_,_,_,_,_,_,_],
[ , , ,_,_,_, , , , , , ],
[ , , ,_,_,_, , , , , , ],
[ , , ,_,_,_, , , , , , ]]";
            var expected = "[[ , , ,_,_,_, , , , , , ],[ , , ,_,_,_, , , , , , ],[ , , ,_,_,_, , , , , , ],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,*,*,*,>,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[ , , ,_,_,_, , , , , , ],[ , , ,_,_,_, , , , , , ],[ , , ,_,_,_, , , , , , ]]";

            Assert.AreEqual(expected, Util.JaggedArrayToString(s.snakeCube(Util.ParseJaggedArray(board, parse), "FFFF")));

            board    = @"[[ , , ,_,_,_, , , , , , ],
[ , , ,_,o,_, , , , , , ],
[ , , ,_,_,_, , , , , , ],
[_,_,_,_,_,_,_,_,_,_,_,_],
[_,_,*,*,>,_,o,_,_,_,_,_],
[_,_,_,_,_,_,_,_,_,_,_,_],
[ , , ,_,_,_, , , , , , ],
[ , , ,_,_,_, , , , , , ],
[ , , ,_,_,_, , , , , , ]]";
            expected = "[[ , , ,_,*,_, , , , , , ],[ , , ,_,*,_, , , , , , ],[ , , ,_,_,_, , , , , , ],[_,_,_,_,_,_,_,_,_,_,*,_],[_,_,_,_,_,_,o,_,_,_,v,_],[_,_,_,_,_,_,_,_,_,_,_,_],[ , , ,_,_,_, , , , , , ],[ , , ,_,_,_, , , , , , ],[ , , ,_,_,_, , , , , , ]]";
            Assert.AreEqual(expected, Util.JaggedArrayToString(s.snakeCube(Util.ParseJaggedArray(board, parse), "LFFFFFF")));

            board    = @"[[ , , ,_,_,_, , , , , , ],
[ , , ,_,o,_, , , , , , ],
[ , , ,_,_,_, , , , , , ],
[_,_,_,_,_,_,_,_,_,_,_,_],
[_,_,*,*,>,_,o,_,_,_,_,*],
[_,_,*,_,_,_,_,_,_,_,_,*],
[ , , ,*,_,_, , , , , , ],
[ , , ,*,_,_, , , , , , ],
[ , , ,*,_,_, , , , , , ]]";
            expected = "[[ , , ,_,_,_, , , , , , ],[ , , ,_,o,_, , , , , , ],[ , , ,*,*,*, , , , , , ],[_,_,*,_,_,_,*,_,_,_,_,_],[_,_,*,_,_,_,*,_,_,_,_,_],[_,_,*,_,_,_,*,_,_,_,_,_],[ , , ,_,_,<, , , , , , ],[ , , ,_,_,_, , , , , , ],[ , , ,_,_,_, , , , , , ]]";
            Assert.AreEqual(expected, Util.JaggedArrayToString(s.snakeCube(Util.ParseJaggedArray(board, parse), "LRLFFRFFFFFFFFFFFFFFFFF")));

            board    = @"[[ , , ,_,_,_, , , , , , ],
[ , , ,_,o,_, , , , , , ],
[ , , ,_,_,_, , , , , , ],
[_,_,_,_,_,_,_,_,_,_,_,_],
[<,_,_,_,_,_,o,_,_,_,_,_],
[*,_,_,_,_,_,_,_,_,_,_,_],
[ , , ,_,*,_, , , , , , ],
[ , , ,_,*,_, , , , , , ],
[ , , ,*,*,_, , , , , , ]]";
            expected = "[[ , , ,_,*,_, , , , , , ],[ , , ,_,*,*, , , , , , ],[ , , ,_,_,_, , , , , , ],[_,_,_,_,_,_,_,*,_,_,*,_],[_,_,_,_,_,_,o,*,_,_,v,_],[_,_,_,_,_,_,_,_,_,_,_,_],[ , , ,_,_,_, , , , , , ],[ , , ,_,_,_, , , , , , ],[ , , ,_,_,_, , , , , , ]]";
            Assert.AreEqual(expected, Util.JaggedArrayToString(s.snakeCube(Util.ParseJaggedArray(board, parse), "FRFFRFLFFRFFFFRFFFFFFFRFFFFFFFFFFFFRFFF")));

            board    = @"[[ , , ,*,*,*, , , , , , ],
[ , , ,*,o,*, , , , , , ],
[ , , ,_,*,*, , , , , , ],
[_,*,_,_,*,_,_,_,_,_,_,_],
[<,_,_,_,*,_,o,_,_,_,_,_],
[*,_,_,_,*,_,_,_,_,_,_,_],
[ , , ,_,*,_, , , , , , ],
[ , , ,_,*,_, , , , , , ],
[ , , ,*,*,_, , , , , , ]]";
            expected = "[[ , , ,_,_,_, , , , , , ],[ , , ,_,o,_, , , , , , ],[ , , ,_,*,*, , , , , , ],[_,_,_,_,*,_,_,_,_,_,_,_],[*,_,_,_,*,<,*,*,*,*,*,*],[*,_,_,_,*,_,_,_,_,_,_,_],[ , , ,_,*,_, , , , , , ],[ , , ,_,*,_, , , , , , ],[ , , ,*,*,_, , , , , , ]]";
            Assert.AreEqual(expected, Util.JaggedArrayToString(s.snakeCube(Util.ParseJaggedArray(board, parse), "LLLFFFFFFF")));

            board    = @"[[ , , ,*,*,*, , , , , , ],
[ , , ,*,o,*, , , , , , ],
[ , , ,_,*,*, , , , , , ],
[_,*,_,_,*,_,_,_,_,_,_,_],
[<,_,_,_,*,_,o,_,_,_,_,_],
[*,_,_,_,*,_,_,_,_,_,_,_],
[ , , ,_,*,_, , , , , , ],
[ , , ,_,*,_, , , , , , ],
[ , , ,*,*,_, , , , , , ]]";
            expected = "[[ , , ,_,_,_, , , , , , ],[ , , ,_,o,_, , , , , , ],[ , , ,_,x,x, , , , , , ],[_,_,_,_,x,_,_,_,_,_,_,_],[x,_,_,_,x,x,x,x,x,x,x,x],[x,_,_,_,x,_,_,_,_,_,_,_],[ , , ,_,x,_, , , , , , ],[ , , ,_,x,_, , , , , , ],[ , , ,x,x,_, , , , , , ]]";
            Assert.AreEqual(expected, Util.JaggedArrayToString(s.snakeCube(Util.ParseJaggedArray(board, parse), "FFFFFFFFF")));

            board    = @"[[ , , , ,_,_,_,_, , , , , , , , ],
[ , , , ,*,*,*,*, , , , , , , , ],
[ , , , ,_,_,_,_, , , , , , , , ],
[ , , , ,_,_,_,_, , , , , , , , ],
[_,*,_,_,_,<,*,*,*,*,*,_,_,_,_,_],
[_,*,_,_,_,_,_,_,_,_,_,_,_,_,_,_],
[_,*,*,*,*,*,_,_,_,_,_,_,_,_,_,_],
[_,_,_,_,_,*,_,_,_,_,_,_,_,_,_,_],
[ , , , ,_,_,_,_, , , , , , , , ],
[ , , , ,_,_,_,_, , , , , , , , ],
[ , , , ,_,_,_,_, , , , , , , , ],
[ , , , ,_,_,_,_, , , , , , , , ]]";
            expected = "[[ , , , ,_,_,_,_, , , , , , , , ],[ , , , ,x,x,x,x, , , , , , , , ],[ , , , ,_,_,_,_, , , , , , , , ],[ , , , ,_,_,_,_, , , , , , , , ],[_,x,_,_,_,x,x,x,x,x,x,_,_,_,_,_],[_,x,_,_,_,x,_,_,_,_,_,_,_,_,_,_],[_,x,x,x,x,x,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[ , , , ,_,_,_,_, , , , , , , , ],[ , , , ,_,_,_,_, , , , , , , , ],[ , , , ,_,_,_,_, , , , , , , , ],[ , , , ,_,_,_,_, , , , , , , , ]]";
            Assert.AreEqual(expected, Util.JaggedArrayToString(s.snakeCube(Util.ParseJaggedArray(board, parse), "LFFFRFFL")));

            board    = @"[[ , , , ,_,_,_,_, , , , , , , , ],
[ , , , ,_,_,_,_, , , , , , , , ],
[ , , , ,_,_,_,_, , , , , , , , ],
[ , , , ,_,_,_,_, , , , , , , , ],
[_,o,_,_,_,_,_,_,_,_,o,_,_,_,_,_],
[_,_,_,_,_,_,_,_,_,_,_,_,_,*,^,_],
[*,*,*,*,*,*,*,*,*,*,_,*,*,*,_,_],
[*,_,_,_,_,_,_,_,_,o,_,*,_,_,_,_],
[ , , , ,_,_,_,_, , , , , , , , ],
[ , , , ,_,_,o,_, , , , , , , , ],
[ , , , ,_,_,_,_, , , , , , , , ],
[ , , , ,*,*,*,*, , , , , , , , ]]";
            expected = "[[ , , , ,_,_,_,_, , , , , , , , ],[ , , , ,_,_,_,_, , , , , , , , ],[ , , , ,_,_,_,_, , , , , , , , ],[ , , , ,_,_,_,_, , , , , , , , ],[_,o,_,_,_,_,_,_,_,_,*,*,*,*,*,_],[_,_,_,_,_,_,_,_,_,_,*,_,_,*,*,_],[*,_,_,_,_,_,_,_,_,_,*,*,*,*,_,_],[*,_,_,_,_,_,_,_,_,*,*,*,_,_,_,_],[ , , , ,_,_,^,_, , , , , , , , ],[ , , , ,_,_,*,*, , , , , , , , ],[ , , , ,_,_,_,_, , , , , , , , ],[ , , , ,*,*,*,*, , , , , , , , ]]";
            Assert.AreEqual(expected, Util.JaggedArrayToString(s.snakeCube(Util.ParseJaggedArray(board, parse), "FLFFFFLFFFRFLFFRF")));

            board    = @"[[ , , , , , , , , , ,_,_,_,*,_,_,_,_,_,_, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,_,_,_,*,_,_,_,_,_,_, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,_,_,_,*,_,_,_,_,_,_, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,_,_,_,*,*,*,*,*,*,_, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,_,_,_,_,_,_,_,_,*,_, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,_,_,_,_,_,_,_,_,*,_, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,*,*,*,*,*,*,_,_,*,_, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,_,_,_,_,_,*,_,_,*,o, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,_,_,_,_,_,*,_,_,_,_, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,_,_,_,_,_,*,*,*,*,*, , , , , , , , , , , , , , , , , , , , ],
[_,_,_,_,*,*,*,_,_,_,_,_,_,_,_,_,_,_,_,_,*,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,*,_,_,_],
[_,*,*,*,*,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,*,_,_,_,_,_,_,_,_,_,_,_,_,*,*,*,*,_,_,_],
[_,*,_,_,_,_,_,_,_,_,_,_,_,_,_,^,*,*,*,*,*,_,_,_,_,_,_,_,_,_,*,*,*,*,_,_,_,_,_,_],
[_,*,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,*,_,_,_,_,_,_,_,_,_],
[_,*,*,*,*,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,*,*,*,_,_,_,_,_,_,_],
[_,_,_,_,*,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,*,_,_,_,_,_,_,_],
[_,_,_,_,*,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,*,_,_,_,_,_,_,_],
[_,_,_,_,*,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,*,_,_,_,_,_,_,_],
[_,_,_,_,*,_,_,_,_,_,_,_,_,_,_,_,_,o,_,_,_,_,_,_,_,_,_,_,_,_,_,_,*,_,_,_,_,_,_,_],
[_,_,_,_,*,_,*,*,*,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,o,_,_,_,*,_,_,_,_,_,_,_],
[ , , , , , , , , , ,_,_,_,_,_,_,_,_,_,_, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,*,*,*,*,*,*,_,_,_,_, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,_,_,_,_,_,*,_,_,_,_, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,*,*,*,*,_,*,*,_,_,o, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,_,_,_,*,_,_,*,*,_,_, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,*,*,_,*,*,*,_,*,_,_, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,_,*,_,_,_,*,_,*,_,_, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,_,*,_,_,_,*,_,*,_,_, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,_,*,_,_,_,*,_,*,_,_, , , , , , , , , , , , , , , , , , , , ],
[ , , , , , , , , , ,_,*,*,*,*,*,_,*,_,_, , , , , , , , , , , , , , , , , , , , ]]";
            expected = "[[ , , , , , , , , , ,_,_,_,_,_,_,_,_,_,_, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,_,_,_,_,_,_,_,_,_,_, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,_,_,_,_,_,_,_,_,_,_, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,_,_,_,_,_,_,_,_,_,_, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,_,_,_,_,_,_,_,_,_,_, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,_,_,_,_,_,_,_,_,_,_, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,x,x,x,x,x,x,_,_,_,_, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,_,_,_,_,_,x,_,_,_,o, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,_,_,_,_,_,x,_,_,_,_, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,_,_,_,_,_,x,x,x,x,x, , , , , , , , , , , , , , , , , , , , ],[_,_,_,_,x,x,x,_,_,_,_,_,_,_,_,_,_,_,_,_,x,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,x,x,x,x,_,_,_,_,_,_,_,_,_,x,x,_,_,_,_,x,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,x,_,_,_,_,_,_,_,_,_,_,_,_,x,x,x,x,x,x,x,_,_,_,_,_,_,_,_,_,x,x,x,_,_,_,_,_,_,_],[_,x,_,_,_,_,_,_,_,_,_,_,_,_,x,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,x,_,_,_,_,_,_,_,_,_],[_,x,x,x,x,_,_,_,_,_,_,_,_,_,x,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,x,x,x,_,_,_,_,_,_,_],[_,_,_,_,x,_,_,_,_,_,_,_,_,_,x,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,x,_,_,_,_,_,_,_],[_,_,_,_,x,_,_,_,_,_,_,_,_,_,x,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,x,_,_,_,_,_,_,_],[_,_,_,_,x,_,_,_,_,_,_,_,_,_,x,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,x,_,_,_,_,_,_,_],[_,_,_,_,x,_,_,_,_,_,_,_,_,_,x,x,x,x,x,x,_,_,_,_,_,_,_,_,_,_,_,_,x,_,_,_,_,_,_,_],[_,_,_,_,x,_,x,x,x,_,_,_,_,_,_,_,_,_,_,x,_,_,_,_,_,_,_,_,o,_,_,_,x,_,_,_,_,_,_,_],[ , , , , , , , , , ,_,_,_,_,_,_,_,_,_,x, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,x,x,x,x,x,x,_,_,_,x, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,_,_,_,_,_,x,_,_,_,x, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,x,x,x,x,_,x,x,_,_,x, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,_,_,_,x,_,_,x,x,x,x, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,x,x,_,x,x,x,_,x,_,_, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,_,x,_,_,_,x,_,x,_,_, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,_,x,_,_,_,x,_,x,_,_, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,_,x,_,_,_,x,_,x,_,_, , , , , , , , , , , , , , , , , , , , ],[ , , , , , , , , , ,_,x,x,x,x,x,_,x,_,_, , , , , , , , , , , , , , , , , , , , ]]";
            Assert.AreEqual(expected, Util.JaggedArrayToString(s.snakeCube(Util.ParseJaggedArray(board, parse), "FLFLFFFFFFFLFFFFFRFFFFFFRFFFFFFFFFFFFF")));
        }