Exemplo n.º 1
0
 private bool PlayFromDiscardPileToBuild(Board board)
 {
     foreach (Pile discardPile in board.GetDiscardPiles(this))
     {
         if (discardPile.HasCards)
         {
             foreach (Pile buildPile in board.BuildPiles)
             {
                 int playedValue;
                 if (buildPile.IsLegalPlay(discardPile.Top, buildPile, out playedValue))
                 {
                     discardPile.Top.PlayedValue = playedValue;
                     board.DoPlay(new Play(discardPile, buildPile));
                     return(true);
                 }
             }
         }
     }
     return(false);
 }
Exemplo n.º 2
0
        private static void AssertFullDeck(Board board)
        {
            Histogram histogram = new Histogram();

            histogram.AddPile(board.DrawPile);

            foreach (IPlayer player in board.Players)
            {
                histogram.AddPile(board.GetReservePile(player));
                histogram.AddPile(board.GetHand(player));
                foreach (Pile pile in board.GetDiscardPiles(player))
                    histogram.AddPile(pile);
            }

            foreach (Pile pile in board.BuildPiles)
                histogram.AddPile(pile);

            histogram.AssertFullDeck();
        }
Exemplo n.º 3
0
        private static void AssertBoardValid(Board board)
        {
            AssertFullDeck(board);

            foreach (IPlayer player in board.Players)
            {
                Assert.IsTrue(board.GetReservePile(player).Count <= Board.ReservePileMax, "Excessive reserve pile: " + board.GetReservePile(player).Count);
                Assert.AreEqual(Board.NumDiscardPiles, board.GetDiscardPiles(player).Count, "Wrong number of discard piles.");
                Assert.AreEqual(Board.NumBuildPiles, board.BuildPiles.Count, "Wrong number of build piles.");
            }
        }
Exemplo n.º 4
0
 private bool PlayFromDiscardPileToBuild(Board board)
 {
     foreach (Pile discardPile in board.GetDiscardPiles(this))
     {
         if (discardPile.HasCards)
         {
             foreach (Pile buildPile in board.BuildPiles)
             {
                 int playedValue;
                 if (buildPile.IsLegalPlay(discardPile.Top, buildPile, out playedValue))
                 {
                     discardPile.Top.PlayedValue = playedValue;
                     board.DoPlay(new Play(discardPile, buildPile));
                     return true;
                 }
             }
         }
     }
     return false;
 }
Exemplo n.º 5
0
 protected void Discard(Board board)
 {
     // Select first card in hand and discard to random pile
     board.DoPlay(new Play(board.GetHand(this), board.GetDiscardPiles(this)[Utility.Random().Next(Board.NumDiscardPiles)]));
 }
Exemplo n.º 6
0
 protected void Discard(Board board)
 {
     // Select first card in hand and discard to random pile
     board.DoPlay(new Play(board.GetHand(this), board.GetDiscardPiles(this)[Utility.Random().Next(Board.NumDiscardPiles)]));
 }