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 SpelStatus(IStapel hand, IAflegBord aflegbord, IExpeditieBord bord,
         IExpeditieBord bordTegenstander, int score, int scoreTegenstander, int aantalKaartenTrekstapel)
 {
     this.hand = hand;
     this.aflegbord = aflegbord;
     this.bord = bord;
     this.bordTegenstander = bordTegenstander;
     this.score = score;
     this.scoreTegenstander = scoreTegenstander;
     this.aantalKaartenTrekstapel = aantalKaartenTrekstapel;
 }
        public static int[] BepaalMogelijkeLegActies(IStapel hand, IExpeditieBord bord)
        {
            ArrayList mogelijkheden = new ArrayList(); ;
            string melding = String.Empty;
            for (int i = 0; i < hand.AantalKaarten; i++)
            {
                IKaart kaart = hand[i];
                ExpeditieStapel stapel = (ExpeditieStapel)bord.GetExpeditieStapel(kaart.Kleur);

                if (stapel.KanAangelegd(kaart, out melding))
                {
                    mogelijkheden.Add(i);
                }
            }
            return (int[])mogelijkheden.ToArray(typeof(int));
        }