public bool KanAangelegd(IKaart kaart, out string melding)
        {
            melding = String.Empty;
            if (this.AantalKaarten == 0)
            {
                return true;
            }

            Kaart bovensteKaart = this[this.AantalKaarten - 1]; ;

            if (kaart is IExpeditieKaart && bovensteKaart is ExpeditieKaart)
            {
                if (((ExpeditieKaart)kaart).Waarde <= ((ExpeditieKaart)bovensteKaart).Waarde)
                {
                    melding = "Kaarten mogen alleen in oplopende waarde aangelegd worden aan een expeditie";
                    return false;
                }
            }
            else if (kaart is IWeddenschapsKaart && bovensteKaart is ExpeditieKaart)
            {
                melding = "Na een expeditiekaart mag geen weddenschapskaart worden aangelegd";
                return false;
            }

            return true;
        }
        private static bool KanAangelegd(IKaart kaart, IExpeditieBord bord)
        {
            IExpeditieStapel stapel = bord.GetExpeditieStapel(kaart.Kleur);

            if (stapel.AantalKaarten == 0)
            {
                return true;
            }

            IKaart bovensteKaart = stapel.GetKaart(stapel.AantalKaarten-1);

            if (kaart is IExpeditieKaart && bovensteKaart is IExpeditieKaart)
            {
                if (((IExpeditieKaart)kaart).Waarde <= ((IExpeditieKaart)bovensteKaart).Waarde)
                {
                    return false;
                }
            }
            else if (kaart is IWeddenschapsKaart && bovensteKaart is IExpeditieKaart)
            {
                return false;
            }

            return true;
        }
        public bool MagKaartSpelen(IKaart kaart)
        {
            bool isWaardeOk = (Stapel.Count() == 0)
                                ? true
                                : Stapel.Last().Waarde <= kaart.Waarde;
            bool isKleurOk = Kleur == kaart.Kleur;

            return(isWaardeOk && isKleurOk);
        }
        public IOntdekkingsStapel SpeelKaart(IKaart kaart)
        {
            if (!MagKaartSpelen(kaart))
            {
                throw new OngeldigeZetException("ongeldige zet");
            }

            Stapel.Add(kaart);

            return(this);
        }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="kaart">De kaart</param>
 public KaartViewModel(IKaart kaart)
 {
     SetKleur(kaart);
     SetWaarde(kaart);
 }
        /// <summary>
        /// Set de waarde van de kaart
        /// Kaart : null is geen kaart
        /// </summary>
        /// <param name="kaart">kaart</param>
        private void SetWaarde(IKaart kaart)
        {
            if (kaart == null)
            {
                _waarde = "";
            }

            if (kaart is IExpeditieKaart)
            {
                _waarde = ((IExpeditieKaart)kaart).Waarde.ToString();
            }

            if (kaart is IWeddenschapsKaart)
            {
                _waarde = "W";
            }
        }
        /// <summary>
        /// Set de kleur van de kaart.
        /// Kaart : null is geen kaart
        /// </summary>
        /// <param name="kaart">kaart</param>
        private void SetKleur(IKaart kaart)
        {
            string kleur;

            if (kaart == null)
            {
                kleur = "Transparant";
            }
            else
            {
                kleur = kaart.Kleur.ToString();
            }

            selector = new ColorSelector(kleur);
        }