4.7 KiB
Lotto Spiel - WPF Anwendung
- Was ist das Programm und was macht es? Das Lotto Spiel ist eine WPF-Anwendung, die ein deutsches 6/49 Lotto-Spiel simuliert. Der Benutzer kann mehrere Tickets kaufen und wählen, ob er die Zahlen manuell eingeben oder zufällig generieren lassen möchte. Das Programm vergleicht dann die Spieler-Tickets mit den Gewinnzahlen und zeigt die Ergebnisse mit Statistiken und Gewinnwahrscheinlichkeiten an.
Hauptfunktionen:
Mehrere Tickets gleichzeitig spielen Zwei Modi: Alle Tickets zufällig oder individuelle Auswahl pro Ticket Manuelle Zahleneingabe mit Validierung (1-49, keine Duplikate) Automatische Gewinnzahlen-Generierung Vergleich aller Tickets mit Gewinnzahlen Statistiken über Matches pro Ticket Berechnung der Gewinnwahrscheinlichkeit 2. Was wurde erfolgreich implementiert WPF Interface:
Eingabebereich für Ticketanzahl Radiobuttons für Spielmodi Dynamische Anzeige für manuelle Zahleneingabe Ergebnisbereich mit Scroll-Funktion Spiellogik:
Zufällige Zahlengenerierung ohne Duplikate Manuelle Eingabe mit Validierung (Bereich 1-49, keine Duplikate) Vergleich von Spieler-Tickets mit Gewinnzahlen Recursive Binary Search für Zahlenvergleich Statistiken:
Zählung der Matches pro Ticket (0-6 Treffer) Gesamtstatistik aller gespielten Tickets Berechnung der Gewinnwahrscheinlichkeit Datenstrukturen:
Liste von int-Arrays für Ticket-Verwaltung Array für Match-Statistiken 3. Was nicht implementiert wurde Fehlende Sachen:
"Spiel wieder starten" Button "Programm beenden" Button Preisverteilung (wie viel Geld man gewinnt) Try-Catch für Fehlerbehandlung 4. Aufgabenverteilung im Team Saad Akki:
MainWindow.xaml (XAML-Struktur) Design und Layout der Benutzeroberfläche Buttons, Labels, TextBoxes Styling und Visual Properties Grid-Layout und Panel-Anordnung Abdelaziz Elouazzani:
MainWindow.xaml.cs (Code-Behind) Event-Handler für alle Buttons und RadioButtons Logik für UI-Interaktionen Datenflow zwischen UI und Lotto-Klasse Ergebnis-Anzeige und Formatierung Khadija:
Lotto.cs (Business Logic Klasse) Algorithmen für Zahlengenerierung Duplicate Checker Methode Recursive Binary Search Implementation Statistik-Berechnungen und Wahrscheinlichkeits-Mathematik Teamarbeit: Wir haben kontinuierlich zusammengearbeitet, um die Verbindung zwischen den Klassen sicherzustellen und die Integration zu testen.
- Entwicklungsansatz Wir haben einen Console-First Ansatz verwendet:
Phase 1: Vollständige Implementation als Konsolen-Anwendung
Klare Vision der Programmlogik entwickeln Algorithmen testen und verfeinern Einfache Modifikationen ohne UI-Anpassungen Phase 2: Konvertierung zu WPF-Anwendung
Core-Logik aus Console-Version übernommen UI-spezifische Anpassungen hinzugefügt Event-driven Programming implementiert Dieser Ansatz hat uns geholfen, die komplexe Logik erst zu verstehen, bevor wir sie in eine graphische Oberfläche integrierten.
- Probleme und Lösungen Problem 1: Programm-Aufbau
Problem: Wie baut man ein komplettes Lotto-System? Lösung: Zwei Modi gemacht (alle zufällig oder einzeln wählen) damit es benutzerfreundlicher ist Problem 2: Wahrscheinlichkeits-Anzeige
Problem: Wie zeigt man sehr kleine Dezimalzahlen richtig an? Lösung: F:10 Format verwendet für 10 Dezimalstellen Problem 3: Duplicate Checker Problem
Problem: DuplicateChecker hat immer "true" gesagt bei gefüllten Arrays Was war falsch: Methode hat Zahl gegen sich selbst im Array geprüft Lösung: Logik geändert - während des Befüllens prüfen, nicht nachher Problem 4: Mehrere Tickets verwalten
Problem: Wie kann man viele Tickets gleichzeitig verwalten? Lösung: List<int[]> verwendet für alle Tickets Problem 5: Interface-Kontrolle
Problem: Panels richtig ein- und ausblenden je nach Benutzer-Wahl Lösung: Event-Handler für RadioButtons mit Visibility-Eigenschaften 7. Was wir gelernt haben Was wir technisch gelernt haben:
Recursive Algorithmen: Binary Search verstehen und programmieren String-Formatierung: verschiedene Format-Arten wie F10 WPF programmieren: Events, XAML-Design, Code-Behind Listen und Arrays: praktisch verwenden im Programm Input-Prüfung: wie man falsche Eingaben verhindert Allgemein:
Erst Console-Version machen, dann WPF ist einfacher Zusammenarbeit im Team und Code verbinden Schwierige Bugs finden und lösen 8. Was man verbessern könnte Try-Catch für bessere Fehlerbehandlung "Neues Spiel" und "Exit" Buttons hinzufügen Bessere Fehlermeldungen für Benutzer Preissystem: wie viel Geld man gewinnt Andere Lotto-Arten (6/45, 5/42) Schönere Animationen Mehrere Sprachen 9. Quellen [Quellen werden später hinzugefügt]
Klassen-Struktur:
MainWindow.xaml: UI-Layout und Design MainWindow.xaml.cs: Event-Handling und UI-Logik Lotto.cs: Core-Spiellogik und Mathematik Entwickelt von: Saad Akki, Abdelaziz Elouazzani, Khadija