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); }
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); } }
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"))); }