Ejemplo n.º 1
0
 public void Setup()
 {
     ai          = ((List <Player>)_BlackjackLogic.GetFieldOrProperty("_players")).OfType <BlackjackAI>().First().GetGameType <IBlackjackAction>();
     human       = ((List <Player>)_BlackjackLogic.GetFieldOrProperty("_players")).OfType <HumanPlayer>().First().GetGameType <IBlackjackAction>();
     aiPlayer    = (Player)_BlackjackLogic.Invoke("GetAI");
     humanPlayer = (Player)_BlackjackLogic.Invoke("GetHuman");
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Verifie quel joueur a gagne et distribue l'argent du pari
        /// </summary>
        /// <returns>Un String qui est afficher sur le UI suite a la partie</returns>
        public String CheckForWinner()
        {
            IBlackjackAction human = _players.OfType <HumanPlayer>().First().GetGameType <IBlackjackAction>(),
                             ai    = _players.OfType <BlackjackAI>().First().GetGameType <IBlackjackAction>();

            Player humanPlayer = GetHuman();
            Player aiPlayer    = GetAI();

            SetHandValue(humanPlayer);
            SetHandValue(aiPlayer);

            if (human.PlayerBust)
            {
                return("Dealer Wins");
            }
            else if (ai.PlayerBust)
            {
                humanPlayer.Money += Bet * 2;
                return("Player Wins");
            }
            else if (human.PlayerHandValue == ai.PlayerHandValue)
            {
                humanPlayer.Money += Bet;
                return("Draw");
            }
            else if (human.PlayerHandValue > ai.PlayerHandValue)
            {
                humanPlayer.Money += Bet * 2;
                return("Player Wins");
            }
            else
            {
                return("Dealer Wins");
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Verifie si le joueur a un Blackjack. Cette methode est seulement appeler suite a
        /// la distribution des cartes.
        /// </summary>
        public void CheckBlackJack()
        {
            IBlackjackAction human = _players.OfType <HumanPlayer>().First().GetGameType <IBlackjackAction>(),
                             ai    = _players.OfType <BlackjackAI>().First().GetGameType <IBlackjackAction>();

            Player humanPlayer = GetHuman();
            Player aiPlayer    = GetAI();

            SetHandValue(humanPlayer);
            SetHandValue(aiPlayer);

            if (human.Has21 && ai.Has21)
            {
                humanPlayer.Money += Bet;
                human.PlayerStand  = true;
                ai.PlayerStand     = true;
            }
            else if (human.Has21)
            {
                humanPlayer.Money += Bet + (int)(Bet * 1.5);
                human.PlayerStand  = true;
                ai.PlayerStand     = true;
            }
            else if (ai.Has21)
            {
                human.PlayerStand = true;
                ai.PlayerStand    = true;
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Methode qui determine la maniere dont le dealer va jouer
        /// Dans notre version de jeu, le dealer Hit lorsqu'il a un soft 17
        /// </summary>
        public void AIPlays()
        {
            IBlackjackAction human = _players.OfType <HumanPlayer>().First().GetGameType <IBlackjackAction>(),
                             ai    = _players.OfType <BlackjackAI>().First().GetGameType <IBlackjackAction>();

            if (ai.PlayerStand)
            {
                return;
            }

            SetHandValue(GetAI());

            if (ai.PlayerHandValue <= 16 || CheckSoft17(ai))
            {
                CardStack.PlayerDrawCard(GetAI());
                BJController.UpdateViewNewCardAI();
                CheckBust(ai, GetAI());
                if (ai.Has21)
                {
                    ai.PlayerStand = true;
                }
            }
            else
            {
                ai.PlayerStand = true;
            }

            if (human.PlayerStand)
            {
                AIPlays();
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Verifie si le joueur en parametre a tirer une carte qui le met au dessus de 21
        /// </summary>
        /// <param name="player"></param>
        /// <param name="pType"></param>
        private void CheckBust(IBlackjackAction player, Player pType)
        {
            SetHandValue(pType);

            if (player.PlayerHandValue > 21)
            {
                player.PlayerStand = true;
                player.PlayerBust  = true;
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Le joueur tire une carte
        /// </summary>
        public void Hit()
        {
            CardStack.PlayerDrawCard(GetHuman());
            IBlackjackAction human = _players.OfType <HumanPlayer>().First().GetGameType <IBlackjackAction>();

            CheckBust(human, GetHuman());
            if (human.Has21)
            {
                human.PlayerStand = true;
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Remet le joueur et le dealer a leur etat initial afin de commencer une nouvelle partie
        /// </summary>
        public void ResetPlayers()
        {
            IBlackjackAction human = _players.OfType <HumanPlayer>().First().GetGameType <IBlackjackAction>(),
                             ai    = _players.OfType <BlackjackAI>().First().GetGameType <IBlackjackAction>();

            human.PlayerBust  = false;
            ai.PlayerBust     = false;
            human.PlayerStand = false;
            ai.PlayerStand    = false;
            human.Has21       = false;
            ai.Has21          = false;
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Methode qui verifie si le dealer a un soft 17
        /// </summary>
        /// <param name="ai"></param>
        /// <returns></returns>
        private bool CheckSoft17(IBlackjackAction ai)
        {
            int sum = GetAI().Hand.Select(c => (int)c.Value).Where(c => (CardRank)c != CardRank.Ace).Sum();

            if (!GetAI().Hand.Select(c => c.Value).Contains(CardRank.Ace))
            {
                return(false);
            }
            else if (sum < 7)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }