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"); }
/// <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"); } }
/// <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; } }
/// <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(); } }
/// <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; } }
/// <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; } }
/// <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; }
/// <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); } }