예제 #1
0
        public bool DoHit(model.Player a_dealer)
        {
            int[] cardScores = new int[(int)model.Card.Value.Count] {
                2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 11
            };
            int score = 0;

            foreach (Card c in a_dealer.GetHand())
            {
                if (c.GetValue() != Card.Value.Hidden)
                {
                    score += cardScores[(int)c.GetValue()];
                }
            }

            if (score == 17 || score > 21)
            {
                foreach (Card c in a_dealer.GetHand())
                {
                    if (c.GetValue() == Card.Value.Ace && (score == 17 || score > 21))
                    {
                        score -= 10;
                    }
                }
            }
            return(score <= 17);
        }
예제 #2
0
        public bool DoHit(model.Player a_dealer)
        {
            // Om äss, och summan av handen är 17
            bool isSoft17 = a_dealer.CalcScore() == 17 && a_dealer.GetHand().Any(card => card.GetValue() == Card.Value.Ace);

            return(isSoft17 || a_dealer.CalcScore() < 17);
        }
예제 #3
0
        public bool DoHit(model.Player a_dealer)
        {
            int dealerScoreAceLowered    = a_dealer.CalcScore();
            int dealerScoreAceNotLowered = 0;

            int[] cardScores = new int[(int)model.Card.Value.Count]
            {
                2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 11
            };

            foreach (Card c in a_dealer.GetHand())
            {
                if (c.GetValue() != Card.Value.Hidden)
                {
                    dealerScoreAceNotLowered += cardScores[(int)c.GetValue()];
                }

                if (dealerScoreAceNotLowered == 17 && c.GetValue() == Card.Value.Ace)
                {
                    return(dealerScoreAceNotLowered < g_softHitLimit);
                }
            }

            return(dealerScoreAceLowered < g_hardHitLimit);
        }
예제 #4
0
        public override void Buy(model.Player player, int buyslot)
        {
            if (player.GetFreeSlot() != -1 && player.Gold >= templ[buyslot].BuyPrice)
            {
                LKCamelot.script.item.Item tempitem = null;
                if (buyslot == 0)
                {
                    tempitem = new script.item.LifeDrug().Inventory(player);
                    player.client.SendPacket(new LKCamelot.model.AddItemToInventory2(
                                                 tempitem).Compile());
                }
                if (buyslot == 1)
                {
                    tempitem = new script.item.MagicDrug().Inventory(player);
                    player.client.SendPacket(new LKCamelot.model.AddItemToInventory2(
                                                 tempitem).Compile());
                }
                if (buyslot == 2)
                {
                    tempitem = new script.item.FullLifeDrug().Inventory(player);
                    player.client.SendPacket(new LKCamelot.model.AddItemToInventory2(
                                                 tempitem).Compile());
                }
                if (buyslot == 3)
                {
                    tempitem = new script.item.FullMagicDrug().Inventory(player);
                    player.client.SendPacket(new LKCamelot.model.AddItemToInventory2(
                                                 tempitem).Compile());
                }

                LKCamelot.model.World.NewItems.TryAdd(tempitem.m_Serial, tempitem);
                player.Gold -= (uint)templ[buyslot].BuyPrice;
            }
        }
예제 #5
0
파일: Easy.cs 프로젝트: sh222td/Portfolio
        public bool EasyWinningRule(model.Player a_dealer, model.Player a_player)
        {
            if (a_dealer.CalcScore() == a_player.CalcScore())
            {
                return(false);
            }

            if (a_dealer.CalcScore() > a_player.CalcScore() && a_dealer.CalcScore() < 21)
            {
                return(true);
            }

            if (a_dealer.CalcScore() > g_maxScore)
            {
                return(false);
            }
            else if (a_dealer.CalcScore() == 21)
            {
                return(true);
            }

            if (a_player.CalcScore() > g_maxScore)
            {
                return(true);
            }
            else if (a_player.CalcScore() == 21)
            {
                return(false);
            }
            return(false);
        }
예제 #6
0
파일: Game.cs 프로젝트: henceee/1DV607
 public Game()
 {
     m_dealer = new Dealer(new rules.RulesFactory());
     m_player = new Player();
     view.IView v = new view.SimpleView();
     m_dealer.ANewCard += v.HandleEvent;
 }
예제 #7
0
        public bool GetGameWinnerRule(model.Player a_dealer, model.Player a_player)
        {
            if (a_dealer.CalcScore() > g_maxScore && a_player.CalcScore() > g_maxScore && a_dealer.CalcScore() < a_player.CalcScore())
            {
                return(false);
            }

            else if (a_dealer.CalcScore() > g_maxScore && a_player.CalcScore() > g_maxScore && a_dealer.CalcScore() > a_player.CalcScore())
            {
                return(true);
            }

            else if (a_dealer.CalcScore() <= g_maxScore && a_player.CalcScore() > g_maxScore)
            {
                return(true);
            }

            else if (a_dealer.CalcScore() > g_maxScore && a_player.CalcScore() <= g_maxScore)
            {
                return(false);
            }

            else if (a_dealer.CalcScore() <= g_maxScore && a_player.CalcScore() <= g_maxScore && a_dealer.CalcScore() > a_player.CalcScore())
            {
                return(true);
            }

            else
            {
                return(false);
            }
        }
예제 #8
0
        public Game(IExcitingObserver listener)
        {
            m_dealer = new Dealer(new rules.RulesFactory());
            m_player = new Player();

            m_dealer.AddListener(listener);
        }
        public bool DoHit(model.Player aDealer)
        {
            _dealer = aDealer;
            var score = _dealer.CalcScore();

            return(score < HitLimit || IsSoft17(score));
        }
예제 #10
0
 public void RedrawAndShowHand(model.Dealer a_dealer, model.Player a_player)
 {
     System.Threading.Thread.Sleep(2000);
     DisplayWelcomeMessage();
     DisplayDealerHand(a_dealer.GetHand(), a_dealer.CalcScore());
     DisplayPlayerHand(a_player.GetHand(), a_player.CalcScore());
 }
예제 #11
0
        public bool DoHit(model.Player a_dealer)
        {
            int score = a_dealer.CalcScore();

            if (score < g_hitLimit)
            {
                return(true);
            }

            if (score == g_hitLimit)
            {
                foreach (Card c in a_dealer.GetHand())
                {
                    //If Ace is in the hand, checks if score without Ace is 6
                    if ((c.GetValue() == Card.Value.Ace) && (score - 11 == 6))
                    {
                        score -= 10;
                    }
                }

                return(score < g_hitLimit);
            }

            return(false);
        }
예제 #12
0
 public Game(controller.ICardDrawnObserver concreteObserver)
 {
     m_dealer = new Dealer(new rules.RulesFactory());
     m_dealer.addObserver("Dealer", concreteObserver, this);
     m_player = new Player();
     m_dealer.addObserver("Player", concreteObserver, this);
 }
예제 #13
0
 public bool IsGameOver(model.Player a_player)
 {
     if (m_deck != null && /*CalcScore() >= g_hitLimit*/ m_hitRule.DoHit(this, a_player) != true || a_player.CalcScore() > g_maxScore)
     {
         return(true);
     }
     return(false);
 }
예제 #14
0
 public bool DoHit(model.Player a_dealer)
 {
     if (a_dealer.CalcCardValues() == g_softLimit && a_dealer.FoundAce())
     {
         return(true);
     }
     return(a_dealer.CalcScore() < g_softLimit);
 }
예제 #15
0
        public bool DoHit(model.Player a_dealer)
        {
            // This rule presumes limit of cards is 5
            bool isUnderLimit = a_dealer.CalcScore() < g_hitLimit;
            bool isSoft17     = a_dealer.CalcScore() == g_hitLimit && a_dealer.HasAce();

            return(isUnderLimit || isSoft17);
        }
예제 #16
0
파일: PlayGame.cs 프로젝트: Lendzin/1dv607
        public void CardDealt(model.Player a_player, model.Card a_card)
        {
            string player = (a_player.isDealer()) ? "Dealer" : "Player";
            string card   = (a_card.GetColor() == model.Card.Color.Hidden) ? "Hidden Card" : $"{a_card.GetValue()} of {a_card.GetColor()}";

            Console.WriteLine($"{player} draws a : {card}");
            Console.WriteLine("*pause*");
        }
예제 #17
0
 public bool DoHit(model.Player a_dealer, model.Player a_player)
 {
     if (a_dealer.CalcScore() > a_player.CalcScore())
     {
         return(false);
     }
     return(a_dealer.CalcScore() < g_hitLimit || a_dealer.CalcScore() < a_player.CalcScore());
 }
예제 #18
0
파일: Game.cs 프로젝트: henceee/1DV607
 //List<BlackJackObserver> m_observers;
 // Constructor
 public Game(view.IView view)
 {
     m_dealer = new Dealer(new rules.RulesFactory());
     m_player = new Player();
     view.AddSubscribers(m_dealer);
     view.AddSubscribers(m_player);
     //m_observers = new List<BlackJackObserver>();
 }
예제 #19
0
        public bool DoHit(model.Player a_dealer)
        {
            if (a_dealer.CalcScore() == 17 && a_dealer.hasAce())
            {
                return(true);
            }

            return(a_dealer.CalcScore() < g_hitLimit);
        }
        public Game()
        {
            m_observers = new List<PlayerHandChangedObserver>();

            m_dealer = new Dealer(new rules.RulesFactory());
            m_player = new Player();

            //subscribe to dealer events (when cards are dealed)
            m_dealer.AddSubscriber(this);
        }
        public bool DoHit(model.Player a_dealer)
        {
            if (a_dealer.CalcScore() == SoftHitLimit &&
                HasAnAce(a_dealer))
            {
                return(true);
            }

            return(a_dealer.CalcScore() < SoftHitLimit);
        }
 public bool DoHit(model.Player a_dealer)
 {
     foreach (Card c in a_dealer.GetHand())
     {
         if (c.GetValue() == Card.Value.Ace && a_dealer.CalcScore() == g_hitLimit)
         {
             return(true);
         }
     }
     return(a_dealer.CalcScore() < g_hitLimit);
 }
예제 #23
0
        public void DealCard(bool show, model.Player player)
        {
            Card c = m_deck.GetCard();

            c.Show(show);
            player.DealCard(c);
            foreach (var observer in observers)
            {
                observer.CardWasDealt(player);
            }
        }
예제 #24
0
 public bool DoCheckWinner(model.Dealer a_dealer, model.Player a_player)
 {
     if (a_dealer.CalcScore() == a_player.CalcScore())
     {
         return(true);
     }
     else
     {
         return(a_dealer.CalcScore() > a_player.CalcScore());
     }
 }
예제 #25
0
 public bool DoHit(model.Player a_dealer)
 {
     if (a_dealer.CalcScore() < g_hitLimit || a_dealer.GotSoftSeventeen())
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #26
0
        public void CalculateScore_Roll334455_returnsIntScore1500()
        {
            Mock <model.IHand> fake_hand_334455 = new Mock <model.IHand>();

            fake_hand_334455 = fake_hand_334455_setup(fake_hand_334455);
            model.IPlayer sutScore = new model.Player(fake_hand_334455.Object);

            int actual   = sutScore.CalculateScore();
            int expected = 1500;

            Assert.Equal(expected, actual);
        }
예제 #27
0
 public bool DidWin(model.Player playerOne, model.Player playerTwo, int maxScore)
 {
     if (playerTwo.CalcScore() > maxScore)
     {
         return(true);
     }
     else if (playerOne.CalcScore() > maxScore)
     {
         return(false);
     }
     return(playerOne.CalcScore() >= playerTwo.CalcScore());
 }
예제 #28
0
        public void Stand(model.Player a_player)
        {
            if (m_deck != null)
            {
                ShowHand();
            }

            while (m_hitRule.DoHit(this, a_player) && this.CalcScore() <= a_player.CalcScore())
            {
                DealShownCardFromDeck(m_deck);
            }
        }
        private bool HasAnAce(model.Player a_dealer)
        {
            foreach (Card card in a_dealer.GetHand())
            {
                if (card.GetValue() == Card.Value.Ace)
                {
                    return(true);
                }
            }

            return(false);
        }
예제 #30
0
        public bool DoHit(model.Player a_dealer)
        {
            foreach (Card c in a_dealer.GetHand())
            {
                if (c.GetValue().ToString() == "Ace")
                {
                    g_hitLimit = 18;
                }
            }

            return(a_dealer.CalcScore() < g_hitLimit);
        }
 public bool DoHit(model.Player a_dealer)
 {
     if (a_dealer.CalcScore() < g_hitLimit)
     {
         return(true);
     }
     if (a_dealer.CalcScore() == g_hitLimit)
     {
         return(a_dealer.GetHand().Any(c => c.GetValue() == Card.Value.Ace));
     }
     return(false);
 }
예제 #32
0
 public bool IsDealerWinner(model.Player a_dealer, model.Player a_player)
 {
     if (a_player.CalcScore() > g_maxScore)
     {
         return(true);
     }
     else if (a_dealer.CalcScore() > g_maxScore)
     {
         return(false);
     }
     return(a_dealer.CalcScore() >= a_player.CalcScore());
 }
        public bool DoHit(model.Player a_dealer)
        {
            int  score       = a_dealer.CalcScore();
            bool containsAce = false;

            if (score >= g_hitLimit && score < 21)
            {
                containsAce = a_dealer.ContainsAces();
            }

            return(score < g_hitLimit || containsAce);
        }
예제 #34
0
        public Game()
        {
            m_dealer = new Dealer(new rules.RulesFactory());
            m_player = new Player();
            m_observers = new List<IBlackJackObserver>();

            // Observer...
            //this.AddSubscriber(m_dealer);
            //this.AddSubscriber(m_player);

            // Player need ref to game for notifying - observer.....
            m_dealer.setGame(this);
            m_player.setGame(this);
        }
예제 #35
0
 public Game()
 {
     m_dealer = new Dealer(new rules.RulesFactory());
     m_player = new Player();
 }
예제 #36
0
 public Game()
 {
     m_dealer = new Dealer(new rules.RulesFactory());
     m_player = new Player();
     m_observers = new List<NewCardObserver>();
 }
예제 #37
0
파일: Game.cs 프로젝트: rn222cx/1dv607-OOP
 public Game()
 {
     m_dealer = new model.Dealer(new model.rules.RulesFactory());
     m_player = new model.Player();
 }
예제 #38
0
파일: Game.cs 프로젝트: sk222sw/blackjack
 public Game()
 {
     m_dealer = new Dealer(new rules.RulesFactory());
     m_player = new Player();
     m_dealer.Subscribe(this);
 }
예제 #39
0
 public Game(rules.IRulesFactory a_rulesFactory)
 {
     m_dealer = new Dealer(a_rulesFactory);
     m_player = new Player();
 }
예제 #40
0
파일: Game.cs 프로젝트: ej222ru/1DV607_WS3
 public Game(view.WinnerAtDraw winnerAtDraw, view.Soft17 soft17, view.GameRules gameRules)
 {
     m_dealer = new Dealer(new rules.RulesFactory( winnerAtDraw, soft17, gameRules));
     m_player = new Player();
 }