示例#1
0
文件: Board.cs 项目: DrDoak/EECS397
 public bool AddNewPlayer(SPlayer sp, PlayerLocation ploc)
 {
     if (ploc.IsEdgePosition(BoardSize) &&
         GetPlayersAtLocation(ploc, sp).Count == 0)
     {
         CurrentPlayersIn.Add(sp);
         m_players.Add(sp);
         sp.MoveToPosition(ploc);
         CurrentDeck.OnPlayerAdd(sp.MyHand, CurrentPlayersIn);
         return(true);
     }
     return(false);
 }
示例#2
0
    public void IsOnEdge()
    {
        List <Vector2Int> testPaths = new List <Vector2Int> ();

        testPaths.Add(new Vector2Int(0, 5));
        testPaths.Add(new Vector2Int(1, 3));
        testPaths.Add(new Vector2Int(2, 6));
        testPaths.Add(new Vector2Int(4, 7));
        Tile    t = new Tile(testPaths);
        SPlayer p = new SPlayer();

        p.MoveToPosition(new PlayerLocation(t.Coordinate, 7));
        Assert.True(p.IsOnEdge(t.Coordinate, Direction.LEFT), "Detected Correct Direction");
    }
示例#3
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);
    }