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()); } }
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); } } }
public void ToevoegenAanLijst(Lijn lijn) { Lijnen.AddLast(lijn); }
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; } } } } }