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