コード例 #1
0
        public void PlayerActionRequest(BlackjackGamePlayer player, string request)
        {
            var currentAction = Players.FirstOrDefault(a => a.HasAction);

            if (PlayerActionIsExpired)
            {
                player.Stand();
            }
            else
            {
                switch (request.ToLower())
                {
                case "hit": player.Hit(); break;

                case "doubledown": player.DoubleDown(); break;

                case "stand": player.Stand(); break;
                }
            }

            var nextAction = Players.FirstOrDefault(a => a.HasAction);

            if (nextAction == null)
            {
                SettlePlayers();
                AwaitingPlayerActionSince = null;
            }
            else if (nextAction.Id != currentAction.Id)
            {
                AwaitingPlayerActionSince = DateTime.UtcNow;
            }
        }
コード例 #2
0
        public BlackjackGamePlayerViewModel(BlackjackGamePlayer player, int secondsAwaitingAction, BlackjackHandSettlement settlement = null)
        {
            if (player == null)
            {
                throw new ArgumentNullException("player");
            }

            Id                    = player.Id;
            Name                  = player.Alias;
            Balance               = player.Account.Balance.ToString();
            IsLive                = player.IsLive;
            HasAction             = player.HasAction;
            Position              = player.Position;
            SecondsAwaitingAction = secondsAwaitingAction;

            BlackjackHand hand;

            if (settlement != null)
            {
                hand  = settlement.PlayerHand;
                Wager = settlement.WagerAmount.ToString();
                RecentWagerOutcome = settlement.WagerOutcome.ToString();
            }
            else
            {
                hand  = player.Hand;
                Wager = player.Wager.ToString();
                RecentWagerOutcome = "";
            }
            Hand = new BlackjackHandViewModel(hand);
        }
コード例 #3
0
 private static void ShowHand(BlackjackGamePlayer player)
 {
     /*  Console.WriteLine($"Score : {player.Hand.ScoreHighLow.Item1} - {player.Hand.ScoreHighLow.Item2}");
      * foreach (var card in player.Hand.Cards)
      * {
      *    Console.WriteLine($"card {card.Suit} {card.Rank}");
      * }*/
 }
コード例 #4
0
 private static void DoubleDown(int wager, BlackjackGamePlayer player)
 {
     if (player.Account.Balance >= wager)
     {
         player.DoubleDown(wager);
     }
     else
     {
         player.DoubleDown(player.Account.Balance);
     }
 }
コード例 #5
0
        public void PlayerWagerRequest(BlackjackGamePlayer player, double wager)
        {
            player.SetWager(wager);

            if (!IsRoundInProgress && Players.Count() == 1)
            {
                StartRound();
                return;
            }

            if (!AwaitingNextRoundSince.HasValue)
            {
                AwaitingNextRoundSince = DateTime.UtcNow;
            }
        }