public void VerplaatsKabel()
        {
            foreach (Lijn lijn in K._lijnen)
            {
                int kansMove = rand.Next(3);
                if (kansMove == 0)
                {
                    int move = rand.Next(0, lijn.Sporter.Moves.Count);
                    lijn.Sporter.HuidigeMove     = (Move)lijn.Sporter.Moves.ElementAt(rand.Next(0, lijn.Sporter.Moves.Count));
                    lijn.Sporter.BehaaldePunten += lijn.Sporter.HuidigeMove.moves();
                }
                else
                {
                    lijn.Sporter.HuidigeMove = null;
                }
            }
            K.verschuifLijnen();
            Lijn verwijderdeLijn = K.VerwijderLijnVanKabel();

            if (verwijderdeLijn != null)
            {
                lv.LijnToevoegenAanRij(new Lijn());
            }
        }
Exemple #2
0
        public void verschuifLijnen()
        {
            foreach (Lijn item in _lijnen)
            {
                Console.WriteLine("positie +1");
                item.PositieOpDeKabel += 1;
            }
            if (_lijnen.Count > 0)
            {
                if (_lijnen.Last.Value.PositieOpDeKabel == 10 && _lijnen.Last.Value.Sporter.AantalRondenNogTeGaan > 0)
                {
                    Lijn lastLine = _lijnen.Last.Value;
                    if (lastLine.Sporter.AantalRondenNogTeGaan > 0)
                    {
                        Console.WriteLine("Ronde minder");
                        lastLine.Sporter.AantalRondenNogTeGaan--;
                    }

                    Console.WriteLine("reset line");
                    _lijnen.RemoveLast();
                    NeemLijnInGebruik(lastLine);
                }
            }
        }
Exemple #3
0
 public void ToevoegenAanLijst(Lijn lijn)
 {
     Lijnen.AddLast(lijn);
 }
Exemple #4
0
 public void LijnToevoegenAanRij(Lijn lijn)
 {
     _lijnen.Enqueue(lijn);
 }
        // Vangt de events op ddie LijnVerplaatst willen
        public void OnLijnVerplaatst(Object source, ElapsedEventArgs e)
        {
            lvCounter++;
            EventHandler handler = LijnVerplaatst;

            LijnVerplaatst?.Invoke(this, e);

            // Als waterskibaan.Start() gerunt is; (Wordt in de WPF gedaan door de startknop)
            if (waterskibaan.isGestart == true)
            {
                if (waterskibaan.kabel.IsStartPositieLeeg())
                {
                    // Een heel lelijk stuk code die een enkele sporter uit de lijst haalt zodat deze kan starten.
                    Sporter tempSporter = wachtrijStarten.SportersVerlatenRij(1)[0];

                    waterskibaan.SporterStart(tempSporter);
                    Console.WriteLine("Er is een sporter gestart");
                }
                // Om de 4 seconden
                if (lvCounter % 4 == 0)
                {
                    waterskibaan.VerplaatsKabel();

                    // Om de 60 seconden
                    if (lvCounter % 60 == 0)
                    {
                        // Print een klein overzicht van alle huidige sporters met hun ID en hun punten

                        Console.WriteLine("\n/*/*/*/*/\n");
                        foreach (Lijn lijn in waterskibaan.kabel._lijnen)
                        {
                            Console.WriteLine($"De sporter aan lijn {lijn.ID} heeft een huidige score van {lijn.sp.BehaaldePunten}");
                        }
                        Console.WriteLine("\n/*/*/*/*/\n");
                    }

                    ////////////////////////////////////////////////////////////////////////////////////////////////////
                    // TO DO:                                                                                         //
                    // ZORG DAT ALLE SPORTERS EEN KANS VAN 25% HEBBEN OM EEN MOVE TE DOEN.                            //
                    // VOLGENSMIJ DOEN ZE DAT AL, MAAR DE PRINT GEEFT ALLE ID'S EN DE MOVE VAN EEN ENKELING WEER.     //
                    // ZORGEN DAT ER ALLEEN GEPRINT WORDT ALS DIE SPECIFIEKE SPORTER OOK EEN MOVE ECHT HEEFT GEDAAN   //
                    //                                                                                                //
                    // PS: PUNTEN ZIJN ZEER KAPOT                                                                     //
                    // PLS FIX                                                                                        //
                    ////////////////////////////////////////////////////////////////////////////////////////////////////

                    // Voor hoeveel lijnen momenteel op de kabel zijn (oftewel spelers)
                    for (int i = 0; i < waterskibaan.kabel._lijnen.Count; i++)
                    {
                        // Berekent een 25% kans voor een sporter om een move te doen
                        Random rand = new Random(DateTime.Now.Millisecond);
                        int    randomMovePercentage = rand.Next(0, 4);
                        Lijn   temp = waterskibaan.kabel._lijnen.ElementAt(i);
                        if (randomMovePercentage > 1)
                        {
                            // Kiest een move in de lijst van moves die een sporter heeft
                            int randomMove = rand.Next(0, temp.sp.Moves.Count());

                            // Voert de move uit en returned de opgegeven score (Succeskans wordt in de move al berekend, dus returned 0 als het faalt)
                            int score = temp.sp.Moves.ElementAt(randomMove).Move();

                            // Haalt de naam van de move op
                            string naam = temp.sp.Moves.ElementAt(randomMove).Naam;

                            // Verandert de HuidigeMove naar de... huidige... move?
                            temp.sp.HuidigeMove = temp.sp.Moves.ElementAt(randomMove);

                            // Voegt de behaalde score van de move bij de totaal behaalde punten van de sporter
                            temp.sp.BehaaldePunten += score;

                            Console.WriteLine($"De sporter {temp.sp.ID} aan lijn {temp.ID} heeft een {naam} geprobeerd, dit heeft {score} punten opgeleverd. Zijn huidige totale score is {temp.sp.BehaaldePunten}");
                        }
                        else
                        {
                            temp.sp.HuidigeMove = null;
                        }
                    }
                }
            }
        }