コード例 #1
0
        /// <summary>
        /// De eerste processen van het spel voor dat het spel start.
        /// Vraag de speler om fiches bij de hand te inzetten.
        /// Geef elke hand eerste kaart.Ook geeft allen de spelers tweede kaart.
        /// Dus de dealer krijgt een kaart.
        /// </summary>
        private bool Beginnen()
        {
            foreach (Speler speler in this.tafel.Spelers)
            {
                int waardeVanDeInzetten = 0;

                // todo, loopje
                while (speler.Fiches.WaardeVanDeFiches < speler.HuidigeTafel.MinimalenZet)
                {
                    this.communicator.TellPlayer(speler, Meldingen.VoorwaardenTafelFiches);
                    if (!this.FichesKopen(speler))
                    {
                        // Wil niet mee doen.
                        // de speler wil niet inzetten en doet dus niet mee
                        this.communicator.TellPlayer(speler, Meldingen.GeenFiches);
                        if (this.AskNieuwRondje(this.tafel.Spelers))
                        {
                            this.StartRonde();
                            return(false);
                        }
                        else
                        {
                            this.communicator.TellPlayer(speler, Meldingen.Gestopt);
                            this.communicator.SleuitHetSpel();
                            return(false);
                        }
                    }
                }

                // Vraag om te inzetten.
                foreach (Hand hand in this.spel.Handen)
                {
                    if (!hand.IsDealerHand)
                    {
                        this.spelerHand = hand as SpelerHand;
                        bool magInzetten = true;
                        if (this.spelerHand.Speler == speler)
                        {
                            while (!this.VraagAanSpelerInzetVoorEenHand(this.spelerHand, out waardeVanDeInzetten))
                            {
                                magInzetten = false;
                                break;
                            }

                            // als mag inzetten, dan laat de speler inzetten.
                            if (magInzetten)
                            {
                                this.spelerHand.Inzet.Add(this.spelerHand.Speler.Fiches.GeefMeFischesTerWaardeVan(waardeVanDeInzetten, 50, true));
                                this.communicator.TellHand(this.spelerHand, Meldingen.ToonInzet, string.Empty);
                            }
                            else
                            {
                                // Wil niet mee doen.
                                // de speler wil niet inzetten en doet dus niet mee
                                this.communicator.TellPlayer(speler, Meldingen.GeenFiches);
                                if (this.AskNieuwRondje(this.tafel.Spelers))
                                {
                                    this.StartRonde();
                                    return(false);
                                }
                                else
                                {
                                    this.communicator.TellPlayer(speler, Meldingen.Gestopt);
                                    this.communicator.SleuitHetSpel();
                                    return(false);
                                }
                            }
                        }
                    }
                }
            }

            // geef elke hand een kaart
            foreach (Hand hand in this.spel.Handen)
            {
                Kaart kaart = this.tafel.StapelKaarten.NeemEenKaart();
                if (kaart != null)
                {
                    hand.AddKaart(kaart);
                    if (!hand.IsDealerHand)
                    {
                        this.communicator.TellHand(hand, Meldingen.KaartenVanDeHand, string.Empty);
                    }

                    // this.TellToPlayers(this.spel.Spelers, Meldingen.KaartenVanDeHand, hand, string.Empty);
                }
                else
                {
                    // Als er geen kaarten in de stapel kaarten staan.
                    this.tafel.StapelKaarten = StapelKaartenFactory.CreateBlackJackKaarten(2);
                }
            }

            // geef elke hand een kaart, behalve de dealer
            foreach (Hand hand in this.spel.Handen)
            {
                if (!hand.IsDealerHand)
                {
                    Kaart kaart = this.tafel.StapelKaarten.NeemEenKaart();
                    if (kaart != null)
                    {
                        hand.AddKaart(kaart);
                    }
                    else
                    {
                        // Als er geen kaarten in de stapel kaarten staan.
                        this.tafel.StapelKaarten = StapelKaartenFactory.CreateBlackJackKaarten(2);
                    }
                }

                if (!hand.IsDealerHand)
                {
                    SpelerHand spelerhand = hand as SpelerHand;

                    // Dan laat de andere spelers weten wat is gebeurt.
                    //  this.TellToPlayers(this.spel.Spelers, Meldingen.KaartenVanDeHand, spelerhand, string.Empty);
                }
            }

            return(true);
        }
コード例 #2
0
        /// <summary>
        /// Maak een nieuwe tafel.
        /// </summary>
        /// <param name="fiches">De fiches die aan de tafel zijn.</param>
        /// <returns>De nieuwe tafel.</returns>
        public static Tafel CreateBlackJackTafel(Fiches fiches)
        {
            Tafel tafel = new Tafel(6, fiches, StapelKaartenFactory.CreateBlackJackKaarten(2), 100, 5);

            return(tafel);
        }