/// <summary> /// Controleer wie gewonnen heeft. Geef hier bericht van en schijf highscore weg indien bestand aanwezig is /// </summary> private void winnaar() { // stop muziek sound.Stop(); geluidSpeelt = false; // speel gewonnen geluid af gewonnen.Play(); if (huidigeScoreSpeler1 > huidigeScoreSpeler2) { MessageBox.Show(naamSpeler1 + " heeft gewonnen met " + huidigeScoreSpeler1 + " punten tegen " + naamSpeler2 + " met " + huidigeScoreSpeler2 + " punten"); } else if (huidigeScoreSpeler2 > huidigeScoreSpeler1) { MessageBox.Show(naamSpeler2 + " heeft gewonnen met " + huidigeScoreSpeler2 + " punten tegen " + naamSpeler1 + " met " + huidigeScoreSpeler1 + " punten"); } else { MessageBox.Show("Gelijk spel!"); } // highscore opslaan if (locatieHighscoreBestand != null) { // indien bestand bestaat, schijf weg en laat highscore scherm zien highscoreWegschrijven(); Highscores highscores = new Highscores(locatieHighscoreBestand); highscores.Show(); } else { // Indien bestand niet bestaat, geef melding dat scores niet zijn opgeslagen MessageBox.Show("Highscore niet opgeslagen door ontbreken highscore bestand."); } // reset spel resetSpel(); }
/// <summary> /// Schrijf highscores weg naar highscore bestand /// </summary> private void highscoreWegschrijven() { // maak instance van highscore en lees huidige score uit naar dic _highScores Highscores highscores = new Highscores(locatieHighscoreBestand); Dictionary <string, int> _highScores = highscores.highscoreUitlezen(); // controleer of speler 1 al voorkomt in de lijst if (_highScores.ContainsKey(naamSpeler1)) { // indien ja, controleer of nieuwe score hoger is dan reeds bekende score. Pas hoogste score toe. if (_highScores[naamSpeler1] < huidigeScoreSpeler1) { _highScores[naamSpeler1] = huidigeScoreSpeler1; } } else { // indien naam nog niet bekend, voeg dan toe met score _highScores.Add(naamSpeler1, huidigeScoreSpeler1); } // controleer of speler 2 bestaat if (_highScores.ContainsKey(naamSpeler2)) { // indien ja, controleer of nieuwe score hoger is dan reeds bekende score. Pas hoogste score toe. if (_highScores[naamSpeler2] < huidigeScoreSpeler2) { _highScores[naamSpeler2] = huidigeScoreSpeler2; } } else { // indien naam nog niet bekend, voeg dan toe _highScores.Add(naamSpeler2, huidigeScoreSpeler2); } // tel aantal scores er in de lijst staan, maar tel nooit meer dan 10 int _aantalScores = _highScores.Count() > 10 ? 10 : _highScores.Count(); // maak een var aan met hierin de highscores uit _highScores Dic gesorteerd var _highScoresGesorteerd = from entry in _highScores orderby entry.Value descending select entry; // leeg het huidige highscore bestand File.WriteAllText(locatieHighscoreBestand, string.Empty); // schijf gesorteerde lijst weg naar highscore bestand foreach (KeyValuePair <string, Int32> entry in _highScoresGesorteerd) { File.AppendAllText(locatieHighscoreBestand, string.Format("{0}\n{1}\n", entry.Key, entry.Value)); _aantalScores--; // als _aantalScore var leeg is (nooit meer dan 10) stop dan met uitvoeren zodat er max 10 highscores in de lijst staan if (_aantalScores == 0) { break; } } }
/// <summary> /// Highscore scherm oproepen /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Button_Highscores(object sender, RoutedEventArgs e) { // controleer of highscore bestand is ingevuld if (highscoreAanwezig) { // indien ja, maak instance van highscores en show deze. Highscores highscores = new Highscores(paden[2]); highscores.Show(); } else { // indien nee, geef foutmelding MessageBox.Show("Highscores zijn niet aanwezig"); } }