Exemplo n.º 1
0
 /// <summary>
 /// Constructor. Maakt 'this.letters' nieuwe letters aan
 /// </summary>
 public Gevecht()
 {
     speler = new Speler();
     GetLetters();
     vijand = vijanden[0];
     beurt = Beurt.Speler;
 }
Exemplo n.º 2
0
 /// <summary>
 /// Berekend de damage die de enemy doet in zijn beurt.
 /// </summary>
 /// <returns>De gedane damage</returns>
 public async Task<int> Enemybeurt()
 {
     beurt = Beurt.Enemy;
     await Task.Delay(2000); 
     int dmg = rnd.Next(0, (20 * vijand.Level)); // een random getal tussen 0 en 3x 
     speler.Health = speler.Health - dmg;
     return dmg;
 }
Exemplo n.º 3
0
        public void DoeRonde()
        {
            dobbelWaarde = Dobbelsteen.Gooi();
            ConsoleKey key = speelBordView.Besturing(Beurt.playerInt);

            //controlleer of het spel moet worden gestopt of dat een dobbelsteen moet worden gegooid
            if (key == ConsoleKey.S)
            {
                Environment.Exit(0);
            }

            if (dobbelWaarde == 0)
            {
                // er is 0 gegooid
                // laat dit weten aan de view, nu is volgende speler aan de beurt
                speelBordView.ShowStatus("Je hebt 0 gegooid... De volgende speler is aan de beurt.");
            }

            // nu kijken of er wel een beurt mogelijk is (bord niet bezet) (alleen checken als er meer dan 0 is gegooid)
            if (dobbelWaarde > 0)
            {
                bool beurtMogelijk = false;
                foreach (Stuk stuk in Beurt.Stukken)
                {
                    if (stuk.VeldNode.Value is Eind)
                    {
                        // deze kan niet verplaatst worden...
                        continue;
                    }
                    LinkedListNode <Veld> node = stuk.VeldNode;
                    for (int i = 0; i < dobbelWaarde; i++)
                    {
                        node = node.Next;
                        if (node.Value is Eind)
                        {
                            // einde bereikt dus er is een beurt mogelijk
                            beurtMogelijk = true;
                            goto EndLoop; // zo kom je uit een geneste loop
                        }
                    }
                    // nu is de eind veldnode duidelijk, kijk nu of daar een stuk geplaatst kan worden
                    if (node.Value is Rozet && node.Value.IsBezet())
                    {
                        continue; // kan hier niet opgezet worden
                    }
                    if (node.Value.IsBezet())
                    {
                        string kleur = stuk.Kleur;
                        if (kleur == "zwart" && node.Value.HeeftZwartStuk())
                        {
                            // kan niet op eigen kleur plaatsen
                            continue;
                        }
                        else if (kleur == "wit" && node.Value.HeeftWitStuk())
                        {
                            // kan niet op eigen kleur plaatsen
                            continue;
                        }
                    }
                    // alle checks gedaan, er is een beurt mogelijk
                    beurtMogelijk = true;
                    break;
                }
EndLoop:

                if (!beurtMogelijk)
                {
                    // er is geen beurt mogelijk met deze dobbelwaarde
                    // laat dit weten aan een view
                    // andere speler nu aan de beurt
                    speelBordView.ShowStatus("Met de huidige dobbelwaarde is geen beurt mogelijk. De volgende is aan de beurt");
                }
                else
                {
                    // er is een beurt mogelijk, nu loopen totdat de speler een geldige steen kiest
                    bool klaarBeurt = false;
                    while (!klaarBeurt)
                    {
                        string success = Beurt.DoeBeurt(Dobbelsteen.Gooi());

                        // kijk naar de string van success en op basis daarvan roep de juiste views aan en check wat nu te doen

                        klaarBeurt = true;
                        switch (success)
                        {
                        case "fail-end":
                            // deze steen staat al op t einde
                            // view
                            klaarBeurt = false;
                            break;

                        case "fail-taken":
                            // er is al een stuk van jezelf op het target veld
                            // view
                            klaarBeurt = false;
                            break;

                        case "fail-rozet-taken":
                            // er is al een stuk op het target rozet veld
                            // view
                            klaarBeurt = false;
                            break;

                        case "success-normal":
                            // stuk normaal verplaatst
                            // view
                            break;

                        case "success-geslagen":
                            // stuk normaal verplaatst en stuk van tegenstander geslagen
                            // view
                            break;

                        case "success-rozet":
                            // stuk op een rozet geplaatst, speler nog keer aan beurt
                            // view
                            klaarBeurt = false;
                            break;

                        case "success-einde":
                            // stuk naar het einde gebracht
                            // view
                            break;
                        }
                    }
                }
            }


            if (Beurt == speler1)
            {
                Beurt        = speler2;
                Tegenstander = speler1;
            }
            else
            {
                Beurt        = speler1;
                Tegenstander = speler2;
            }
        }