public void NoDragonTile() { Administrator a = new Administrator(); Board b = new Board(new Vector2Int(6, 6)); SPlayer p1 = new SPlayer(); SPlayer p2 = new SPlayer(); SPlayer p3 = new SPlayer(); b.AddNewPlayer(p1, new PlayerLocation(new Vector2Int(0, 0), 7)); b.AddNewPlayer(p2, new PlayerLocation(new Vector2Int(0, 0), 4)); b.AddNewPlayer(p3, new PlayerLocation(new Vector2Int(0, 0), 5)); Debug.Assert(b.CurrentDeck.DragonTileHand == null, "No player has Dragon tile beforehand"); Tile oldTile = p1.MyHand.RemoveFromHand(p1.MyHand.Pieces[1]); oldTile.SetCoordinate(new Vector2Int(0, 0)); oldTile.SetRotation(Direction.DOWN); TurnOutput to = a.PlayATurn(b.CurrentDeck.Pieces, b.CurrentPlayersIn, b.CurrentPlayersOut, b, oldTile); Assert.AreEqual(2, to.PlayersOut.Count, "Two players were eliminated"); Assert.AreEqual(1, to.PlayersIn.Count, "Players eliminated removed from Players in"); Assert.False(to.ContinueGame, "Game end has been detected"); Assert.IsNull(b.CurrentDeck.DragonTileHand, "No player has Dragon tile afterwards"); }
public void Play() { TurnOutput currentTurnStatus = new TurnOutput(); currentTurnStatus.ContinueGame = true; int numTurns = 0; while (currentTurnStatus.ContinueGame) { SPlayer currentSPlayer = m_board.GetCurrentPlayer(); Tile t = currentSPlayer.SelectTile(m_board, m_board.CurrentDeck.Pieces.Count); if (!LegalPlay(currentSPlayer, m_board, t)) { currentSPlayer.KickPlayerReplaceAI(); t = currentSPlayer.SelectTile(m_board, m_board.CurrentDeck.Pieces.Count); } t.SetCoordinate(currentSPlayer.Location.Coordinate); currentSPlayer.MyHand.RemoveFromHand(t); currentTurnStatus = PlayATurn(m_board.CurrentDeck.Pieces, m_board.CurrentPlayersIn, m_board.CurrentPlayersOut, m_board, t); currentSPlayer.MyPlayer.EndGame(currentTurnStatus.b, playerToColors(currentTurnStatus.PlayersIn)); if (!LegalHand(currentSPlayer.MyHand, m_board)) { currentSPlayer.KickPlayerReplaceAI(); } m_board.AdvancePlayers(); } }
private TurnOutput getTurnOutput(Board b) { TurnOutput to = new TurnOutput(); to.PlayersIn = b.CurrentPlayersIn; to.PlayersOut = b.CurrentPlayersOut; to.b = b; to.DrawPile = b.CurrentDeck.Pieces; to.ContinueGame = (to.PlayersIn.Count > 1); return(to); }
TurnOutput PlayATurn(List <Tile> DrawPile, List <SPlayer> PlayersIn, List <SPlayer> PlayersOut, Board b, Tile PlacedTile) { TurnOutput to = new TurnOutput(); SPlayer ActivePlayer = PlayersIn[0]; foreach (SPlayer p in b.GetAdjacentPlayers(PlacedTile)) { b.MovePlayer(p, PlacedTile); } b.CurrentDeck.DrawCard(ActivePlayer); to.DrawPile = b.CurrentDeck.DrawDeck; to.PlayersIn = b.CurrentPlayersIn; to.PlayersOut = b.CurrentPlayersOut; to.b = b; Debug.Log(PlayersIn.Count); to.ContinueGame = (PlayersIn.Count > 1); return(to); }