From 6f4ab1369159c0f6c790968dbe5fe26c6f651ab2 Mon Sep 17 00:00:00 2001 From: Jan-Alexander Dshek Date: Fri, 13 Jun 2025 16:03:10 +0200 Subject: [PATCH] README.md aktualisiert --- README.md | 68 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 313a70d..3848884 100644 --- a/README.md +++ b/README.md @@ -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 (1–49) +--- + +## 🔧 Funktionen im Überblick + +- Auswahl von genau 6 Zahlen (Buttons von 1–49) - 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.