コード例 #1
0
        public void StukGeslagen(Stuk stuk)
        {
            // verwijder stuk van veld
            stuk.VeldNode.Value.RemoveStuk(stuk);

            // zet stuk op begin
            stuk.VeldNode = Velden.First;

            // voeg stuk toe aan begin
            stuk.VeldNode.Value.AddStuk(stuk);
        }
コード例 #2
0
 public void RemoveStuk(Stuk stuk)
 {
     Stukken.Remove(stuk);
 }
コード例 #3
0
 public void AddStuk(Stuk stuk)
 {
     Stukken.Add(stuk);
 }
コード例 #4
0
        public string DoeBeurt(int dobbelWaarde)
        {
            int stukIndex = spel.KrijgSpelerInput(playerInt);

            Stuk stuk = Stukken[stukIndex];

            LinkedListNode <Veld> node = stuk.VeldNode;

            if (node.Value is Eind)
            {
                return("fail-end");
            }
            for (int i = 0; i < dobbelWaarde; i++)
            {
                node = node.Next;
                if (node.Value is Eind)
                {
                    // einde bereikt dus er is een beurt mogelijk
                    goto EndCheck; // hoeft niet meer te checken
                }
            }
            // nu is de eind veldnode duidelijk, kijk nu of daar een stuk geplaatst kan worden
            if (node.Value is Rozet && node.Value.IsBezet())
            {
                // hier staat al een steen op een rozet.
                return("fail-rozet-taken");
            }
            if (node.Value.IsBezet())
            {
                string kleur = stuk.Kleur;
                if (kleur == "zwart" && node.Value.HeeftZwartStuk())
                {
                    // kan niet op eigen kleur plaatsen
                    return("fail-taken");
                }
                else if (kleur == "wit" && node.Value.HeeftWitStuk())
                {
                    // kan niet op eigen kleur plaatsen
                    return("fail-taken");
                }
            }
EndCheck:

            // nu de stuk verplaatsen

            // eerste alle stukken slaan als het geen eind veld is
            bool stukGeslagen = false;

            if (!(node.Value is Eind) && node.Value.IsBezet())
            {
                List <Stuk> stukken = node.Value.Stukken;
                // list nu clonen om concurrentmodification exception te voorkomen
                stukken = stukken.ToList();
                foreach (Stuk stukTegenstander in stukken)
                {
                    spel.Tegenstander.StukGeslagen(stukTegenstander);
                    stukGeslagen = true;
                }
            }

            // uiteindelijk stuk verplaatsen

            // verwijder stuk van huidig veld
            stuk.VeldNode.Value.RemoveStuk(stuk);

            // koppel veld aan stuk
            stuk.VeldNode = node;

            // add stuk aan veld
            node.Value.AddStuk(stuk);

            if (stukGeslagen)
            {
                return("success-geslagen");
            }

            if (node.Value is Rozet)
            {
                return("success-rozet");
            }
            if (node.Value is Eind)
            {
                return("success-einde");
            }


            return("success-normal");
        }