LOTTOPROJEKT/README.md
2025-06-17 06:33:48 +02:00

136 lines
4.7 KiB
Markdown

Lotto Spiel - WPF Anwendung
1. 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.
5. 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.
6. 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