Example #1
0
 public Field(Tile[,] initialTiles, int marginFromLeft, int marginFromRight)
 {
     _tiles       = initialTiles;
     leftBorder   = _tiles.GetLowerBound(0) + marginFromLeft;
     rightBorder  = _tiles.GetUpperBound(0) - marginFromRight;
     bottomBorder = _tiles.GetUpperBound(1) - 1;
 }
Example #2
0
    /// <summary>
    /// Return the list of T's neighbors
    /// </summary>
    /// <param name="T"></param>
    /// <returns></returns>
    private static List <Tile> Neighbors(Tile T)
    {
        var res = new List <Tile>();

        if (T.X + 1 <= _map.GetUpperBound(0) && _map[T.X + 1, T.Y].IsFloor())
        {
            res.Add(_map[T.X + 1, T.Y]);
        }
        if (T.X - 1 >= _map.GetLowerBound(0) && _map[T.X - 1, T.Y].IsFloor())
        {
            res.Add(_map[T.X - 1, T.Y]);
        }
        if (T.Y + 1 <= _map.GetUpperBound(1) && _map[T.X, T.Y + 1].IsFloor())
        {
            res.Add(_map[T.X, T.Y + 1]);
        }
        if (T.Y - 1 >= _map.GetLowerBound(1) && _map[T.X, T.Y - 1].IsFloor())
        {
            res.Add(_map[T.X, T.Y - 1]);
        }

        // diagonal
        if (T.X + 1 <= _map.GetUpperBound(0) && T.Y + 1 <= _map.GetUpperBound(1) &&
            res.Contains(_map[T.X + 1, T.Y]) && res.Contains(_map[T.X, T.Y + 1]) && _map[T.X + 1, T.Y + 1].IsFloor())
        {
            res.Add(_map[T.X + 1, T.Y + 1]);
        }
        if (T.X + 1 <= _map.GetUpperBound(0) && T.Y - 1 >= _map.GetLowerBound(1) &&
            res.Contains(_map[T.X + 1, T.Y]) && res.Contains(_map[T.X, T.Y - 1]) && _map[T.X + 1, T.Y - 1].IsFloor())
        {
            res.Add(_map[T.X + 1, T.Y - 1]);
        }
        if (T.X - 1 >= _map.GetLowerBound(0) && T.Y - 1 >= _map.GetLowerBound(1) &&
            res.Contains(_map[T.X - 1, T.Y]) && res.Contains(_map[T.X, T.Y - 1]) && _map[T.X - 1, T.Y - 1].IsFloor())
        {
            res.Add(_map[T.X - 1, T.Y - 1]);
        }
        if (T.X - 1 >= _map.GetLowerBound(0) && T.Y + 1 <= _map.GetUpperBound(1) &&
            res.Contains(_map[T.X - 1, T.Y]) && res.Contains(_map[T.X, T.Y + 1]) && _map[T.X - 1, T.Y + 1].IsFloor())
        {
            res.Add(_map[T.X - 1, T.Y + 1]);
        }
        return(res);
    }