LottoGame/Form1.cs
2025-06-11 12:58:30 +02:00

261 lines
8.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace LottoGame
{
public partial class Form1 : Form
{
private int meinGeld = 2000;
private List<int> meineZahlen = new List<int>();
private int spielAnzahl = 0;
private Button[] alleButtons = new Button[49];
private Label geldAnzeige;
private Label ergebnisAnzeige;
private Button spielButton;
private Label spielZaehler;
private const int KOSTEN_PRO_SPIEL = 5;
private const int ZAHLEN_AUSWAHL = 7;
private const int MAX_ZAHL = 49;
public Form1()
{
InitializeComponent();
SpielfeldErstellen();
}
private void SpielfeldErstellen()
{
this.Text = "Lotto Spiel";
this.Size = new Size(800, 600);
this.BackColor = Color.FromArgb(240, 248, 255);
int buttonGroesse = 45;
int abstand = 8;
int startX = 30;
int startY = 30;
ErstelleZahlenButtons(buttonGroesse, abstand, startX, startY);
int rechteSeiteX = startX + 7 * (buttonGroesse + abstand) + 40;
int rechteSeiteY = startY + 30;
ErstelleSpielButton(rechteSeiteX, rechteSeiteY);
ErstelleGeldAnzeige(rechteSeiteX, rechteSeiteY);
ErstelleSpielZaehler(rechteSeiteX, rechteSeiteY);
ErstelleErgebnisAnzeige(startX, startY, buttonGroesse, abstand);
}
private void ErstelleZahlenButtons(int buttonGroesse, int abstand, int startX, int startY)
{
for (int i = 0; i < MAX_ZAHL; i++)
{
alleButtons[i] = new Button();
alleButtons[i].Size = new Size(buttonGroesse, buttonGroesse);
alleButtons[i].Location = new Point(
startX + (i % 7) * (buttonGroesse + abstand),
startY + (i / 7) * (buttonGroesse + abstand)
);
alleButtons[i].Text = (i + 1).ToString();
alleButtons[i].Tag = i + 1;
alleButtons[i].BackColor = Color.White;
alleButtons[i].FlatStyle = FlatStyle.Flat;
alleButtons[i].Font = new Font("Segoe UI", 11, FontStyle.Bold);
alleButtons[i].Click += ZahlenButton_Click;
this.Controls.Add(alleButtons[i]);
}
}
private void ErstelleSpielButton(int x, int y)
{
spielButton = new Button();
spielButton.Size = new Size(180, 60);
spielButton.Location = new Point(x, y);
spielButton.Text = "Spielen";
spielButton.Font = new Font("Segoe UI", 14, FontStyle.Bold);
spielButton.BackColor = Color.FromArgb(0, 120, 215);
spielButton.ForeColor = Color.White;
spielButton.FlatStyle = FlatStyle.Flat;
spielButton.Enabled = false;
spielButton.Click += SpielButton_Click;
this.Controls.Add(spielButton);
}
private void ErstelleGeldAnzeige(int x, int y)
{
geldAnzeige = new Label();
geldAnzeige.Size = new Size(180, 50);
geldAnzeige.Location = new Point(x, y + 80);
geldAnzeige.Text = "Mein Geld: " + meinGeld + "€";
geldAnzeige.Font = new Font("Segoe UI", 13, FontStyle.Bold);
geldAnzeige.ForeColor = Color.DarkGreen;
geldAnzeige.BackColor = Color.FromArgb(230, 255, 230);
geldAnzeige.TextAlign = ContentAlignment.MiddleCenter;
geldAnzeige.BorderStyle = BorderStyle.FixedSingle;
this.Controls.Add(geldAnzeige);
}
private void ErstelleSpielZaehler(int x, int y)
{
spielZaehler = new Label();
spielZaehler.Size = new Size(180, 50);
spielZaehler.Location = new Point(x, y + 150);
spielZaehler.Text = "Spiele gespielt: 0";
spielZaehler.Font = new Font("Segoe UI", 13, FontStyle.Bold);
spielZaehler.ForeColor = Color.DarkBlue;
spielZaehler.BackColor = Color.FromArgb(230, 230, 255);
spielZaehler.TextAlign = ContentAlignment.MiddleCenter;
spielZaehler.BorderStyle = BorderStyle.FixedSingle;
this.Controls.Add(spielZaehler);
}
private void ErstelleErgebnisAnzeige(int startX, int startY, int buttonGroesse, int abstand)
{
ergebnisAnzeige = new Label();
ergebnisAnzeige.Size = new Size(700, 120);
ergebnisAnzeige.Location = new Point(startX, startY + 7 * (buttonGroesse + abstand) + 30);
ergebnisAnzeige.Text = "Wähle 7 Zahlen aus";
ergebnisAnzeige.Font = new Font("Segoe UI", 11, FontStyle.Bold);
ergebnisAnzeige.TextAlign = ContentAlignment.TopLeft;
ergebnisAnzeige.AutoSize = false;
ergebnisAnzeige.BorderStyle = BorderStyle.FixedSingle;
ergebnisAnzeige.BackColor = Color.FromArgb(255, 255, 224);
this.Controls.Add(ergebnisAnzeige);
}
private void ZahlenButton_Click(object sender, EventArgs e)
{
Button geklickterButton = (Button)sender;
int zahl = (int)geklickterButton.Tag;
if (meineZahlen.Contains(zahl))
{
meineZahlen.Remove(zahl);
geklickterButton.BackColor = Color.White;
}
else if (meineZahlen.Count < ZAHLEN_AUSWAHL)
{
meineZahlen.Add(zahl);
geklickterButton.BackColor = Color.LightGreen;
}
spielButton.Enabled = (meineZahlen.Count == ZAHLEN_AUSWAHL);
ergebnisAnzeige.Text = "Ausgewählte Zahlen: " + string.Join(", ", meineZahlen);
}
private void SpielButton_Click(object sender, EventArgs e)
{
if (meinGeld < KOSTEN_PRO_SPIEL)
{
MessageBox.Show("Du hast nicht genug Geld zum Spielen!");
return;
}
meinGeld -= KOSTEN_PRO_SPIEL;
List<int> gezogeneZahlen = ZieheZufallszahlen();
int treffer = ZaehleTreffer(gezogeneZahlen);
int gewinn = BerechneGewinn(treffer);
meinGeld += gewinn;
AktualisiereAnzeigen(gezogeneZahlen, treffer, gewinn);
SetzeSpielZurueck();
}
private List<int> ZieheZufallszahlen()
{
List<int> zahlen = new List<int>();
Random zufall = new Random();
while (zahlen.Count < ZAHLEN_AUSWAHL)
{
int zahl = zufall.Next(1, MAX_ZAHL + 1);
if (!zahlen.Contains(zahl))
{
zahlen.Add(zahl);
}
}
return zahlen;
}
private int ZaehleTreffer(List<int> gezogeneZahlen)
{
int treffer = 0;
foreach (int zahl in meineZahlen)
{
if (gezogeneZahlen.Contains(zahl))
{
treffer++;
}
}
return treffer;
}
private int BerechneGewinn(int treffer)
{
switch (treffer)
{
case 3: return 20;
case 4: return 400;
case 5: return 20000;
case 6: return 100000;
case 7: return 1000000;
default: return 0;
}
}
private void AktualisiereAnzeigen(List<int> gezogeneZahlen, int treffer, int gewinn)
{
geldAnzeige.Text = "Mein Geld: " + meinGeld + "€";
ergebnisAnzeige.Text = "Gezogene Zahlen: " + string.Join(", ", gezogeneZahlen) + "\n" +
"Deine Zahlen: " + string.Join(", ", meineZahlen) + "\n" +
"Treffer: " + treffer + "\n" +
"Einsatz: -" + KOSTEN_PRO_SPIEL + "€\n" +
"Gewinn: " + (gewinn > 0 ? "+" : "") + gewinn + "€";
spielAnzahl++;
spielZaehler.Text = "Spiele gespielt: " + spielAnzahl;
}
private void SetzeSpielZurueck()
{
meineZahlen.Clear();
foreach (Button button in alleButtons)
{
button.BackColor = Color.White;
}
spielButton.Enabled = false;
}
}
}