public int[,] Initialise() { // Start with 2 random tiles. Values can be 2 or 4. var random = new Random(); var firstx = random.Next(TilesXY.GetLength(0)); var firsty = random.Next(TilesXY.GetLength(1)); var secondx = random.Next(TilesXY.GetLength(0)); var secondy = random.Next(TilesXY.GetLength(1)); while (secondx == firstx && secondy == firsty) { secondx = random.Next(TilesXY.GetLength(0)); secondy = random.Next(TilesXY.GetLength(1)); } Console.WriteLine("firstx = {0}, firsty = {1}, secondx = {2}, secondy = {3}", firstx, firsty, secondx, secondy); TilesXY[firstx, firsty] = (random.Next(2) + 1) * 2; TilesXY[secondx, secondy] = (random.Next(2) + 1) * 2; foreach (var tile in TilesXY) { Console.Write(tile); } Console.WriteLine(); return(TilesXY); }
// Adds a 2 or a 4 to an empty space public int[,] AddRandomTileToEmptySpace() { var random = new Random(); var x = random.Next(TilesXY.GetLength(0)); var y = random.Next(TilesXY.GetLength(1)); while (TilesXY[x, y] != 0) { x = random.Next(TilesXY.GetLength(0)); y = random.Next(TilesXY.GetLength(1)); } TilesXY[x, y] = (random.Next(2) + 1) * 2; return(TilesXY); }
public int[,] Move(Direction direction) { switch (direction) { case Direction.Left: for (var i = 0; i < TilesXY.GetLength(0); i++) { var row = new int[4]; for (var j = 0; j < TilesXY.GetLength(1); j++) { row[j] = TilesXY[i, j]; } row = Merge(row); for (var j = 0; j < TilesXY.GetLength(1); j++) { TilesXY[i, j] = row[j]; } } break; case Direction.Right: for (var i = 0; i < TilesXY.GetLength(0); i++) { var row = new int[4]; for (var j = TilesXY.GetLength(1) - 1; j >= 0; j--) { row[TilesXY.GetLength(1) - j - 1] = TilesXY[i, j]; } row = Merge(row); for (var j = TilesXY.GetLength(1) - 1; j >= 0; j--) { TilesXY[i, j] = row[TilesXY.GetLength(1) - 1 - j]; } } break; case Direction.Up: for (var i = 0; i < TilesXY.GetLength(1); i++) { var row = new int[4]; for (var j = 0; j < TilesXY.GetLength(0); j++) { row[j] = TilesXY[j, i]; } row = Merge(row); for (var j = 0; j < TilesXY.GetLength(0); j++) { TilesXY[j, i] = row[j]; } } break; case Direction.Down: for (var i = 0; i < TilesXY.GetLength(1); i++) { var row = new int[4]; for (var j = TilesXY.GetLength(0) - 1; j >= 0; j--) { row[TilesXY.GetLength(0) - j - 1] = TilesXY[j, i]; } row = Merge(row); for (var j = TilesXY.GetLength(0) - 1; j >= 0; j--) { TilesXY[j, i] = row[TilesXY.GetLength(0) - 1 - j]; } } break; default: break; } return(TilesXY); }