README.md aktualisiert

This commit is contained in:
Jan-Alexander Dshek 2025-06-13 16:03:10 +02:00
parent ae5c3c7497
commit 6f4ab13691

View File

@ -1,39 +1,55 @@
# Lotto Spiel WPF Anwendung
# 🎲 Lotto Spiel WPF Anwendung (C# / .NET)
## Projektbeschreibung
## 📌 Projektbeschreibung
Dieses Projekt ist eine WPF-Anwendung in C#, in der Benutzer ein klassisches 6-aus-49-Lotto-Spiel spielen können. Ziel der Anwendung ist es, 6 Zahlen zwischen 1 und 49 auszuwählen, eine Ziehung zu starten und den möglichen Gewinn abhängig von der Anzahl der Treffer zu berechnen. Das Spiel enthält ein Kontostand-System, das den Einsatz pro Spiel (5 €) sowie eventuelle Gewinne berücksichtigt.
Diese Anwendung ist ein selbst programmiertes 6-aus-49-Lotto-Spiel auf Basis von WPF (Windows Presentation Foundation) in C#. Ziel ist es, 6 Zahlen zwischen 1 und 49 auszuwählen, eine Ziehung zu starten und anschließend zu sehen, wie viele Treffer man hat natürlich mit einem kleinen virtuellen Geldsystem dazu.
Die Oberfläche wurde benutzerfreundlich gestaltet, mit einem Zahlenfeld zur Auswahl, einer Seitenleiste für Aktionen und einer Anzeige des aktuellen Kontostands.
Beim Start hat man ein Guthaben von **2000€**. Für jede Ziehung werden **5€ Einsatz** abgezogen. Je nach Anzahl der Treffer gibt es dann Gewinne zurück. Alles läuft über eine einfache grafische Oberfläche mit Zahlenauswahl, Ziehungsbutton, Kontostandsanzeige und Reset-Funktion.
## Funktionen
Die Anwendung wurde gemeinsam entwickelt und funktioniert komplett lokal ohne Datenbank, Internet oder externe Abhängigkeiten.
- Auswahl von 6 Zahlen über Buttons (149)
---
## 🔧 Funktionen im Überblick
- Auswahl von genau 6 Zahlen (Buttons von 149)
- Zufällige Ziehung von 6 Lottozahlen
- Markierung der Treffer und Nicht-Treffer
- Gewinnberechnung basierend auf Trefferanzahl
- Kontostand-Management mit Startguthaben von 2000 €
- Reset-Funktion zum Zurücksetzen des Spiels
- Automatische Trefferprüfung
- Farbige Darstellung: **Grün = Treffer**, **Rot = kein Treffer**
- Kontostand mit Startguthaben & Einsatz/Gewinn-Logik
- Reset-Button zum Zurücksetzen des Spiels
## Team & Aufgabenverteilung
---
**Jan Dshek**
- Entwicklung der Spiellogik (Ziehung, Trefferprüfung, Gewinnermittlung)
- Implementierung der Benutzerinteraktion mit den Zahlenbuttons
- Validierung der Eingabe (max. 6 Zahlen, ausreichend Guthaben)
## 👨‍💻 Aufgabenverteilung
**Kevin Dietze**
- Gestaltung des XAML-Layouts (UI-Design)
- Erstellung der grafischen Benutzeroberfläche mit WrapPanel und StackPanel
- Integration der Kontostandsanzeige und Aktionsbuttons
Die Entwicklung haben wir im Team gemacht und dabei klare Schwerpunkte gesetzt:
## Probleme und Herausforderungen
### **Jan Dshek**
- Spiellogik in C# (Zufallsziehung, Trefferprüfung, Gewinnvergabe)
- Benutzerinteraktion (Zahlen klicken, Zustände speichern)
- Eingabeprüfung (max. 6 Zahlen, Guthabencheck)
- **Mehrfachauswahl-Validierung:** Es musste verhindert werden, dass mehr als 6 Zahlen ausgewählt werden können. Dabei haben wir ein Problem mit der UI-Synchronisation entdeckt, das behoben werden konnte, indem die Auswahl direkt in der `Click`-Methode überprüft wurde.
- **Kontostandsaktualisierung:** Bei mehrfachen Ziehungen ohne Zurücksetzen wurden irrtümlich mehrfach Einsätze abgezogen. Wir haben daher eine Sperrung weiterer Eingaben nach der Ziehung integriert.
- **Markierungslogik:** Es war anfangs unklar, wie die Buttons nach der Ziehung farblich korrekt dargestellt werden sollen (Treffer = Grün, Niete = Rot). Dieses Problem wurde durch einen klaren Vergleich zwischen gezogenen und gewählten Zahlen gelöst.
- **Reset-Verhalten:** Es kam vor, dass nach dem Zurücksetzen noch alte Ziehungsergebnisse angezeigt wurden. Dieses Problem wurde durch das Leeren der Listen `selectedNumbers` und `gezogeneZahlen` sowie das Zurücksetzen der Button-Farben gelöst.
### **Kevin Dietze**
- XAML-Oberfläche (Layout, UI-Design mit Panels und Buttons)
- Gestaltung der Spielfläche mit WrapPanel
- Umsetzung der Seitenleiste inkl. Kontostandsanzeige & Buttons
## Fazit
> Viele Details wie Farben, Fehlermeldungen und Spielfluss haben wir gemeinsam abgestimmt und umgesetzt.
Das Projekt hat geholfen, sowohl das Verständnis von WPF als auch den Umgang mit C# in einer GUI-Anwendung zu vertiefen. Durch die klare Aufgabenverteilung konnte jeder gezielt seine Stärken einbringen, und wir haben wichtige Erfahrungen im Umgang mit Events, Benutzerführung und Zustandsspeicherung gesammelt.
---
## ⚠️ Herausforderungen im Projekt
- **Zahlenauswahl beschränken:** Es musste sichergestellt werden, dass wirklich nur 6 Zahlen auswählbar sind ohne weitere Trickserei. Das haben wir direkt über die Button-Logik geregelt.
- **Doppelte Ziehungen vermeiden:** Nach dem Start einer Ziehung sollten keine weiteren Aktionen möglich sein, bevor das Spiel zurückgesetzt wird.
- **Farbmarkierung bei Ziehung:** Anfangs war unklar, wie wir Treffer/Nieten optisch abheben. Am Ende haben wir es mit einfacher Farb-Logik und klaren Listenvergleichen gelöst.
- **Reset sauber machen:** Nach dem Zurücksetzen durfte nichts mehr von vorher sichtbar sein weder alte Ziehungen noch grüne/rote Felder. Wir leeren also gezielt die nötigen Listen und setzen die Button-Farben zurück.
---
## ✅ Fazit
Das Projekt war eine gute Möglichkeit, die Arbeit mit WPF und C# in der Praxis zu vertiefen. Wir haben gelernt, wie man Benutzerinteraktion sinnvoll umsetzt, mit Zuständen arbeitet und UI und Logik sauber voneinander trennt.
Besonders geholfen hat die klare Aufgabenteilung: Einer eher im Code, der andere am Design aber trotzdem haben wir alles als Team umgesetzt. Die Anwendung läuft stabil, ist verständlich aufgebaut und tut genau, was sie soll.