コード例 #1
0
        /// <summary>
        /// Returns a tile from the tileGrid starting from a given face of a specific tile (and it's position on the tileGrid).
        /// </summary>
        /// <param name="tile">Tile to start from.</param>
        /// <returns></returns>
        internal TriominoTile GetAdjacentTileAtSpecificFace(TriominoTile tile, TileFace tileFace)
        {
            ArrayTileOrientation orientation = tile.Orientation.ToArrayTileOrientation();

            if (orientation == ArrayTileOrientation.BottomUp && tileFace == TileFace.Bottom)
            {
                return(this.tileGrid[tile.TileGridPosition.Y + 1, tile.TileGridPosition.X]);
            }

            if (orientation == ArrayTileOrientation.TopDown && tileFace == TileFace.Bottom)
            {
                return(this.tileGrid[tile.TileGridPosition.Y - 1, tile.TileGridPosition.X]);
            }

            if (orientation == ArrayTileOrientation.BottomUp && tileFace == TileFace.Right ||
                orientation == ArrayTileOrientation.TopDown && tileFace == TileFace.Left)
            {
                return(this.tileGrid[tile.TileGridPosition.Y, tile.TileGridPosition.X + 1]);
            }

            if (orientation == ArrayTileOrientation.BottomUp && tileFace == TileFace.Left ||
                orientation == ArrayTileOrientation.TopDown && tileFace == TileFace.Right)
            {
                return(this.tileGrid[tile.TileGridPosition.Y, tile.TileGridPosition.X - 1]);
            }

            return(null);
        }
コード例 #2
0
        /// <summary>
        /// Inserts the values of a tile in the 'tileValueGrid' based on the tiles name, its tileGrid-Coordinates and its 'ArrayTileOrientation'
        /// </summary>
        /// <param name="name">The tiles name.</param>
        /// <param name="tileGridPosition">the tiles position within the tileGrid.</param>
        /// <param name="orientation">The tile Orientation within the tileValueGrid.</param>
        private void AddValuesToValueGrid(string name, Point tileGridPosition, ArrayTileOrientation orientation)
        {
            string[] nameParts = name.Split('-');

            switch(orientation)
            {
                case ArrayTileOrientation.BottomUp:
                    this.tileValueGrid[tileGridPosition.Y, tileGridPosition.X + 1] = int.Parse(nameParts[0]);
                    this.tileValueGrid[tileGridPosition.Y + 1, tileGridPosition.X + 2] = int.Parse(nameParts[1]);
                    this.tileValueGrid[tileGridPosition.Y + 1, tileGridPosition.X] = int.Parse(nameParts[2]);
                    break;
                case ArrayTileOrientation.TopDown:
                    this.tileValueGrid[tileGridPosition.Y + 1, tileGridPosition.X + 1] = int.Parse(nameParts[0]);
                    this.tileValueGrid[tileGridPosition.Y, tileGridPosition.X] = int.Parse(nameParts[1]);
                    this.tileValueGrid[tileGridPosition.Y, tileGridPosition.X + 2] = int.Parse(nameParts[2]);
                    break;
            }
        }
コード例 #3
0
        /// <summary>
        /// Determines the 'ValueGrid' values for a given tileGrid Position according to the tiles 'ArrayTileOrientation'.
        /// </summary>
        /// <param name="tileGridPosition">the tiles position within the tileGrid.</param>
        /// <param name="orientation"></param>
        /// <returns>the tile values</returns>
        private List<int?> GetValueGridValuesFromNameGridPositions(Point tileGridPosition, ArrayTileOrientation orientation)
        {
            List<int?> valueGridValues = new List<int?>();

            switch(orientation)
            {
                case ArrayTileOrientation.BottomUp:
                    valueGridValues = new List<int?>()
                    {
                        this.tileValueGrid[tileGridPosition.Y, tileGridPosition.X + 1],
                        this.tileValueGrid[tileGridPosition.Y + 1, tileGridPosition.X + 2],
                        this.tileValueGrid[tileGridPosition.Y + 1, tileGridPosition.X]
                    };
                    break;
                case ArrayTileOrientation.TopDown:
                    valueGridValues = new List<int?>()
                    {
                        this.tileValueGrid[tileGridPosition.Y + 1, tileGridPosition.X + 1],
                        this.tileValueGrid[tileGridPosition.Y, tileGridPosition.X],
                        this.tileValueGrid[tileGridPosition.Y, tileGridPosition.X + 2]
                    };
                    break;
            }

            return valueGridValues;
        }