示例#1
0
文件: Board.cs 项目: DrDoak/EECS397
    private bool isPlayerEliminated(SPlayer sp, PlayerLocation startLocation, Tile t)
    {
        if (t == null || startLocation.Coordinate != t.Coordinate)
        {
            return(false);
        }

        int positionAfterPath = t.GetPathConnection(startLocation.PositionOnTile);

        Vector2Int     newCoord = startLocation.Coordinate + DirectionUtils.DirectionToVector(DirectionUtils.IntToDirection(positionAfterPath));
        int            newPos   = DirectionUtils.AdjacentPosition(positionAfterPath);
        PlayerLocation pl       = new PlayerLocation(newCoord, newPos);

        if (!isPositionInBoard(newCoord) || GetPlayersAtLocation(pl, sp).Count > 0)
        {
            return(true);
        }

        if (m_placedTiles.ContainsKey(newCoord))
        {
            return(isPlayerEliminated(sp, pl, m_placedTiles [newCoord]));
        }

        return(false);
    }
示例#2
0
文件: Board.cs 项目: DrDoak/EECS397
    public List <SPlayer> MovePlayer(SPlayer sp, Tile t)
    {
        List <SPlayer> playersEliminated = new List <SPlayer> ();

        if (sp.Location.Coordinate != t.Coordinate)
        {
            return(playersEliminated);
        }

        int positionAfterPath = t.GetPathConnection(sp.Location.PositionOnTile);

        Vector2Int     newCoord = sp.Location.Coordinate + DirectionUtils.DirectionToVector(DirectionUtils.IntToDirection(positionAfterPath));
        int            newPos   = DirectionUtils.AdjacentPosition(positionAfterPath);
        PlayerLocation newLoc   = new PlayerLocation(newCoord, newPos);

        sp.MoveToPosition(newLoc);
        List <SPlayer> colP = GetPlayersAtLocation(newLoc, sp);

        if (colP.Count > 0)
        {
            playersEliminated.Add(sp);
            playersEliminated.AddRange(colP);
            return(playersEliminated);
        }
        if (!isPositionInBoard(newCoord))
        {
            playersEliminated.Add(sp);
            return(playersEliminated);
        }
        if (m_placedTiles.ContainsKey(newCoord))
        {
            return(MovePlayer(sp, m_placedTiles [newCoord]));
        }

        return(playersEliminated);
    }
示例#3
0
 public void AdjacentDirection()
 {
     Assert.AreEqual(DirectionUtils.AdjacentPosition(7), 2);
     Assert.AreEqual(DirectionUtils.AdjacentPosition(0), 5);
 }