diff --git a/Lotto_Wpf/Lotto_Wpf/LottoProject.cs b/Lotto_Wpf/Lotto_Wpf/LottoProject.cs
new file mode 100644
index 0000000..f6d950a
--- /dev/null
+++ b/Lotto_Wpf/Lotto_Wpf/LottoProject.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Linq;
+
+namespace LottoProject
+{
+ public class Lotto
+ {
+ public int[] GezogeneZahlen { get; private set; } = new int[6];
+ public int TrefferAnzahl { get; private set; } = 0;
+
+ public Lotto(int[] userZahlen)
+ {
+ Ziehen();
+ TrefferAnzahl = Treffer(userZahlen, GezogeneZahlen);
+ }
+
+ private void Ziehen()
+ {
+ Random rnd = new();
+ for (int i = 0; i < GezogeneZahlen.Length; i++)
+ {
+ int zahl;
+ do
+ {
+ zahl = rnd.Next(1, 50);
+ }
+ while (GezogeneZahlen.Contains(zahl));
+ GezogeneZahlen[i] = zahl;
+ }
+ }
+
+ public int Treffer(int[] user, int[] gezogen)
+ {
+ return user.Count(gezogen.Contains);
+ }
+ }
+}
+
+
diff --git a/Lotto_Wpf/Lotto_Wpf/MainWindow.xaml b/Lotto_Wpf/Lotto_Wpf/MainWindow.xaml
index f728ebb..0543a16 100644
--- a/Lotto_Wpf/Lotto_Wpf/MainWindow.xaml
+++ b/Lotto_Wpf/Lotto_Wpf/MainWindow.xaml
@@ -1,131 +1,23 @@
-
+ Title="Lotto Number Board" Height="600" Width="400">
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Media;
-
- List selectedNumbers = new List();
-
- void Window_Loaded(object sender, RoutedEventArgs e)
- {
- for (int i = 1; i <= 49; i++)
- {
- Button btn = new Button
- {
- Content = i.ToString(),
- Margin = new Thickness(5),
- Background = Brushes.LightGray,
- Foreground = Brushes.Black,
- Tag = i
- };
- btn.Click += NumberButton_Click;
- NumberGrid.Children.Add(btn);
- }
- }
-
- void NumberButton_Click(object sender, RoutedEventArgs e)
- {
- Button btn = sender as Button;
- int number = (int)btn.Tag;
-
- if (selectedNumbers.Contains(number))
- {
- selectedNumbers.Remove(number);
- btn.Background = Brushes.LightGray;
- }
- else if (selectedNumbers.Count < 6)
- {
- selectedNumbers.Add(number);
- btn.Background = Brushes.Orange;
- }
-
- SelectedNumbersText.Text = string.Join(", ", selectedNumbers.OrderBy(n => n));
- }
-
- void QuickPick_Click(object sender, RoutedEventArgs e)
- {
- Random rand = new Random();
- selectedNumbers.Clear();
- var buttons = NumberGrid.Children.OfType
-
+
+
diff --git a/Lotto_Wpf/Lotto_Wpf/MainWindow.xaml.cs b/Lotto_Wpf/Lotto_Wpf/MainWindow.xaml.cs
index bc5c2a3..77bb801 100644
--- a/Lotto_Wpf/Lotto_Wpf/MainWindow.xaml.cs
+++ b/Lotto_Wpf/Lotto_Wpf/MainWindow.xaml.cs
@@ -1,24 +1,149 @@
-using System.Text;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
using System.Windows;
using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
+using LottoProject;
+using System.Diagnostics;
+using System.Threading.Tasks;
-namespace Lotto_Wpf
+namespace LottoNumberBoard
{
- ///
- /// Interaction logic for MainWindow.xaml
- ///
public partial class MainWindow : Window
{
+ private HashSet selectedNumbers = new();
+
public MainWindow()
{
InitializeComponent();
+ GenerateNumberButtons();
+ }
+
+ private void GenerateNumberButtons()
+ {
+ for (int i = 1; i <= 49; i++)
+ {
+ Button btn = new Button
+ {
+ Content = i.ToString(),
+ Tag = i,
+ Margin = new Thickness(5)
+ };
+ btn.Click += NumberButton_Click;
+ NumberGrid.Children.Add(btn);
+ }
+ }
+
+ private void NumberButton_Click(object sender, RoutedEventArgs e)
+ {
+ if (sender is Button btn && int.TryParse(btn.Content.ToString(), out int number))
+ {
+ if (selectedNumbers.Contains(number))
+ {
+ selectedNumbers.Remove(number);
+ btn.ClearValue(Button.BackgroundProperty);
+ }
+ else
+ {
+ if (selectedNumbers.Count >= 6)
+ {
+ MessageBox.Show("Nur 6 Zahlen erlaubt!", "Hinweis", MessageBoxButton.OK, MessageBoxImage.Information);
+ return;
+ }
+ selectedNumbers.Add(number);
+ btn.Background = Brushes.LightGreen;
+ }
+
+ UpdateResultDisplay();
+ }
+ }
+
+ private void UpdateResultDisplay()
+ {
+ var sorted = selectedNumbers.OrderBy(n => n);
+ ResultTextBlock.Text = "Ausgewählt: " + string.Join(", ", sorted);
+ }
+
+ private void DrawButton_Click(object sender, RoutedEventArgs e)
+ {
+ if (selectedNumbers.Count != 6)
+ {
+ MessageBox.Show("Bitte wähle genau 6 Zahlen!", "Warnung", MessageBoxButton.OK, MessageBoxImage.Warning);
+ return;
+ }
+
+ int[] userZahlen = selectedNumbers.ToArray();
+ Lotto lotto = new Lotto(userZahlen);
+
+ string gezogene = string.Join(", ", lotto.GezogeneZahlen.OrderBy(n => n));
+ string getroffene = string.Join(", ", userZahlen.Intersect(lotto.GezogeneZahlen).OrderBy(n => n));
+ int anzahlTreffer = lotto.TrefferAnzahl;
+
+ ResultTextBlock.Text += $"\nGezogene Zahlen: {gezogene}";
+ ResultTextBlock.Text += $"\nTreffer: {anzahlTreffer} ({getroffene})\n";
+ }
+
+ private async void SimulationButton_Click(object sender, RoutedEventArgs e)
+ {
+ if (selectedNumbers.Count != 6)
+ {
+ MessageBox.Show("Bitte wähle genau 6 Zahlen für die Simulation!", "Warnung", MessageBoxButton.OK, MessageBoxImage.Warning);
+ return;
+ }
+
+ int[] meineZahlen = selectedNumbers.ToArray();
+ int[] trefferVerteilung = new int[7];
+ int meinGeld;
+ if (!int.TryParse(StartgeldTextBox.Text, out meinGeld))
+ {
+ MessageBox.Show("Bitte gültigen Startgeldbetrag eingeben!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
+
+ int versuche = 1000;
+
+ var stopwatch = new Stopwatch();
+ stopwatch.Start();
+
+ await Task.Run(() =>
+ {
+ Random rnd = new();
+ for (int i = 0; i < versuche; i++)
+ {
+ HashSet zufallsZahlen = new();
+ while (zufallsZahlen.Count < 6)
+ zufallsZahlen.Add(rnd.Next(1, 50));
+
+ Lotto lotto = new Lotto(zufallsZahlen.ToArray());
+ int treffer = lotto.Treffer(meineZahlen, lotto.GezogeneZahlen);
+ trefferVerteilung[treffer]++;
+
+ meinGeld -= 5;
+ switch (treffer)
+ {
+ case 3: meinGeld += 20; break;
+ case 4: meinGeld += 400; break;
+ case 5: meinGeld += 20000; break;
+ case 6: meinGeld += 100000000; break;
+ }
+ }
+ });
+
+ stopwatch.Stop();
+
+ StringBuilder sb = new();
+ sb.AppendLine("\nSimulation abgeschlossen:");
+ for (int i = 0; i < trefferVerteilung.Length; i++)
+ {
+ sb.AppendLine($"{i} Treffer: {trefferVerteilung[i]}x");
+ }
+ sb.AppendLine($"\nDauer: {stopwatch.Elapsed.TotalSeconds:F2} Sekunden");
+ sb.AppendLine($"Kontostand: {meinGeld} €");
+
+ ResultTextBlock.Text += "\n" + sb.ToString();
}
}
-}
\ No newline at end of file
+}
+