コード例 #1
0
        /// <summary>
        /// Voeg een dealer aan het spel toe.
        /// </summary>
        /// <param name="dealer">De dealer die wordt toegevoegd.</param>
        /// <returns>De hand van de dealer.</returns>
        public DealerHand DealerToevoegen(Dealer dealer)
        {
            // een hand wordt aangemaakt,
            DealerHand hand = new DealerHand(dealer);

            // aan de collectie toegevoegd.
            this.VoegEenHandToe(hand);

            // en de hand wordt teruggegeven
            return(hand);
        }
コード例 #2
0
        /// <summary>
        /// Geef de waarde van de hand van de dealer.
        /// </summary>
        /// <param name="handen">Handen van het spel.</param>
        /// <returns>De waarde van de dealers hand.</returns>
        private int WaardeVanDeDealerHand(List <Hand> handen)
        {
            foreach (Hand hand in handen)
            {
                DealerHand dealerHand = hand as DealerHand;
                if (dealerHand != null)
                {
                    return(this.blackJackPointsCalculator.CalculatePoints(hand.Kaarten));
                }
            }

            return(0);
        }
コード例 #3
0
        /// <summary>
        /// Controleert de hand van de dealer.
        /// </summary>
        /// <param name="dealerHand">De hand van de dealer.</param>
        private void BehandelDeDealer(DealerHand dealerHand)
        {
            this.TellToPlayers(this.tafel.Spelers, Meldingen.KaartenVanDeHand, dealerHand, string.Empty);
            while (this.MoetDeDealerKopen(dealerHand))
            {
                this.spel.Kopen(dealerHand, this.tafel.StapelKaarten);
                this.TellToPlayers(this.tafel.Spelers, Meldingen.KaartenVanDeHand, dealerHand, string.Empty);
            }

            if (this.MoetDeDealerPassen(dealerHand))
            {
                dealerHand.ChangeStatus(HandStatussen.Gepassed);
                this.TellToPlayers(this.tafel.Spelers, Meldingen.DealerGepassed, dealerHand, string.Empty);
            }
            else if (this.IsDealerDood(dealerHand))
            {
                dealerHand.ChangeStatus(HandStatussen.IsDood);
                this.TellToPlayers(this.tafel.Spelers, Meldingen.DealerDied, dealerHand, string.Empty);
            }
        }
コード例 #4
0
        /// <summary>
        /// Start een rondje.
        /// </summary>
        private void StartRonde()
        {
            if (this.tafel.Plekken == null)
            {
                throw new ArgumentNullException("Er zijn geen plekken met spelers.");
            }

            this.spel.ResetHanden();

            if (this.Beginnen())
            {
                while (this.spel.GaNaarDeVolgendeSpeelbareHand() != null)
                {
                    Hand spelerHand = this.spel.HuidigeHand;
                    this.spelerHand = spelerHand as SpelerHand;

                    if (spelerHand.Status != HandStatussen.BlackJeck && spelerHand.Status != HandStatussen.IsDood)
                    {
                        List <Acties> mogelijkActies = this.ControleerHand(spelerHand);
                        if (!spelerHand.IsDealerHand)
                        {
                            // Check of de speler Black jack.
                            if (this.IsBlackJack(spelerHand))
                            {
                                this.HandelBlackJack(this.spelerHand);
                                this.communicator.TellHand(spelerHand, Meldingen.KaartenVanDeHand, string.Empty);
                                this.communicator.TellHand(spelerHand, Meldingen.BlackJack, string.Empty);

                                // this.TellToPlayers(this.tafel.Spelers, Meldingen.BlackJack, spelerHand, string.Empty);
                            }

                            if (mogelijkActies.Count == 0)
                            {
                                // dan kan ik niks en ga ik naar de volgende hand. Bijv, omdat de hand is gesloten.
                                this.communicator.TellHand(this.spelerHand, Meldingen.GeenActie, string.Empty);
                                continue;
                            }

                            while ((mogelijkActies.Count > 0 && spelerHand.Status == HandStatussen.InSpel) ||
                                   spelerHand.Status == HandStatussen.Verdubbelen ||
                                   spelerHand.Status == HandStatussen.Gesplitst ||
                                   spelerHand.Status == HandStatussen.Gekochtocht)
                            {
                                if (mogelijkActies.Count == 1)
                                {
                                    this.ProcessActie(this.spelerHand, mogelijkActies[0]);
                                }
                                else
                                {
                                    // er zijn meerdere acties mogelijk, vraag aan de speler wat hij/zij wil.
                                    Acties gekozenActie = this.AskActie(mogelijkActies, this.spelerHand);
                                    if (this.ProcessActie(this.spelerHand, gekozenActie))
                                    {
                                        // Zoek de acties.
                                        mogelijkActies = this.ControleerHand(spelerHand);
                                    }
                                    else
                                    {
                                        // Als de speler mag de actie niet doen dan verwijdert dit actie.
                                        mogelijkActies.Remove(gekozenActie);
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (this.MagDealerBehandelen())
                            {
                                // start behandelen met de dealer.
                                this.dealerHand = spelerHand as DealerHand;
                                this.BehandelDeDealer(this.dealerHand);
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                }

                this.BeeindHetSpel(this.spel.Handen);

                if (this.AskNieuwRondje(this.tafel.Spelers))
                {
                    this.StartRonde();
                }
                else
                {
                    // this.communicator.TellPlayer(this.spelerHand.Speler, Meldingen.ToonFichesInPortemonnee);
                    this.communicator.SleuitHetSpel();
                }
            }
        }