Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        // 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);
        }
Exemplo n.º 3
0
        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);
        }