public void PakVanTrekStapel()
        {
            if (this.legActie == null)
            {
                throw new ApplicationException("Je kunt pas pakken als je eerst een kaart weggelegd hebt");
            }

            Beurt beurt = new Beurt(this.legActie, new PakKaartVanTrekStapelActie(this.speler));
            this.huidigSpel.VoerActiesUit(beurt);
            this.legActie = null;
        }
Example #2
0
        /// <summary>
        /// voert de door de speler gewenste acties uit
        /// </summary>
        /// <param name="acties"></param>
        /// <returns></returns>
        public void VoerActiesUit(Beurt beurt)
        {
            HuidigeSpeler.LaatsteBeurt.LegKaart = null;
            HuidigeSpeler.LaatsteBeurt.LegStapel = null;
            HuidigeSpeler.LaatsteBeurt.PakKaart = null;
            HuidigeSpeler.LaatsteBeurt.PakStapel = null;

            if (rondeAfgelopen)
                throw new LostCitiesException("De ronde is voorbij");

            //eerste actie mag alleen
            // LegKaartWeg of LegKaartAan zijn
            //tweede actie mag alleen
            //PakKaartVanBord zijn
            if (beurt.LegActie.Speler != HuidigeSpeler || beurt.PakActie.Speler != HuidigeSpeler)
            {
                throw new LostCitiesException("speler is niet aan de beurt");
            }

            if (IsAfgelopen())
            {
                throw new LostCitiesException("spel is afgelopen");
            }

            Speler speler = HuidigeSpeler;
            if (beurt.LegActie is LegKaartWegActie)
            {
                int index = ((LegKaartWegActie) beurt.LegActie).IndexInHand;
                Kaart kaart = HuidigeSpeler.Hand.PakKaart(index);
                this.AflegBord.LegKaartAan(kaart);

                HuidigeSpeler.LaatsteBeurt.LegKaart = kaart;
                HuidigeSpeler.LaatsteBeurt.LegStapel = (Stapel)this.AflegBord.GetAflegStapel(kaart.Kleur);

               }

            if (beurt.LegActie is LegKaartAanActie)
            {
                int index = ((LegKaartAanActie)beurt.LegActie).IndexInHand;
                Kaart kaart = HuidigeSpeler.Hand.PakKaart(index);
                HuidigeSpeler.Bord.LegKaartAan(kaart);

                HuidigeSpeler.LaatsteBeurt.LegKaart = kaart;
                HuidigeSpeler.LaatsteBeurt.LegStapel = (Stapel)HuidigeSpeler.Bord.GetExpeditieStapel(kaart.Kleur);
            }

            if (beurt.PakActie is PakKaartVanTrekStapelActie)
            {
                Kaart kaart = trekStapel.PakBovensteKaart();
                HuidigeSpeler.Hand.AddKaart(kaart);

                HuidigeSpeler.LaatsteBeurt.PakKaart = kaart;
                HuidigeSpeler.LaatsteBeurt.PakStapel = (Stapel)trekStapel;

                WisselBeurt();

            }

            if (beurt.PakActie is PakKaartVanAflegStapelActie)
            {
                Kleur kleur = (Kleur)((PakKaartVanAflegStapelActie)beurt.PakActie).KaartKleur;
                Kaart kaart = this.aflegSpelbord.PakBovensteKaart(kleur);
                HuidigeSpeler.Hand.AddKaart(kaart);

                HuidigeSpeler.LaatsteBeurt.PakKaart = kaart;
                HuidigeSpeler.LaatsteBeurt.PakStapel = (Stapel)HuidigeSpeler.Bord.GetExpeditieStapel(kaart.Kleur);

                WisselBeurt();
            }
        }