Hallo liebe C# Community,
ich habe als Nebenfach im Studium ein Programmierpraktikum belegt, wo unteranderem eine Hausaufgabe die Programmierung eines Lottospiels 6 aus 49 ist.
Ich habe wirklich noch nicht das Know How ,was ich benötige um ein solches Spiel ohne Hilfe zu programmieren.
Meine Ergebnisse bis jetzt:
Ich habe es soweit geschafft, dass Zahlen aus einer selbst defineirten Klasse eingelesen werde, und diese Als Tipps und Superzahl gespeichert werden.
Auf die Funktion der Zufallszahl habe ich mir von einem vorherigen Beitrag hier im Forum abgeschaut.
Fragen:
Wie heißen die Variablen, die ich mit einander vergleichen muss?
Und wie soll der code genau aussehen.
Hier der Code der Program.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Hausübung_1__.Klassen;
namespace Hausübung_1__
{
class Program
{
static void Main(string[] args)
{
Lottospiel();
}
private static void Lottospiel()
{
//6 Spielzahlen + Superzahl erfassen
Zahlen zahlenErfassen = new Zahlen();
Console.WriteLine("---------------------------------------------------");
Console.WriteLine("Herzlich Willkommen zum Lottospiel 6 aus 49");
Console.WriteLine("---------------------------------------------------");
// Eingabe Tipp 1
Console.WriteLine("Bitte geben Sie den ersten Tipp zwischen 1-49 ein:");
zahlenErfassen.Tipp1 = Console.ReadLine();
//Eingabe Tipp 2 + Dopplungscheck
Console.WriteLine("Bitte geben Sie den zweiten Tipp zwischen 1-49 ein:");
zahlenErfassen.Tipp2 = Console.ReadLine();
if((zahlenErfassen.Tipp2 == zahlenErfassen.Tipp1)
&&(zahlenErfassen.Tipp2==zahlenErfassen.Tipp3)
&&(zahlenErfassen.Tipp2==zahlenErfassen.Tipp4)
&&(zahlenErfassen.Tipp2==zahlenErfassen.Tipp5)
&&(zahlenErfassen.Tipp2==zahlenErfassen.Tipp6))
{
Console.WriteLine("Sie haben eine Zahl Doppelt eingegeben,bitte geben Sie einen anderen Tipp ein:");
Console.WriteLine("Bitte geben Sie den zweiten Tipp zwischen 1-49 ein:");
zahlenErfassen.Tipp2 = Console.ReadLine();
}
Console.WriteLine("Bitte geben Sie den dritten Tipp zwischen 1-49 ein:");
zahlenErfassen.Tipp3 = Console.ReadLine();
Console.WriteLine("Bitte geben Sie den vierten Tipp zwischen 1-49 ein:");
zahlenErfassen.Tipp4 = Console.ReadLine();
Console.WriteLine("Bitte geben Sie den fünften Tipp zwischen 1-49 ein:");
zahlenErfassen.Tipp5 = Console.ReadLine();
Console.WriteLine("Bitte geben Sie den sechsten Tipp zwischen 1-49 ein:");
zahlenErfassen.Tipp6 = Console.ReadLine();
Console.WriteLine("-----------------------------------------------------");
Console.WriteLine("Bitte geben Sie ihre gewünschte Superzahl ein:");
zahlenErfassen.Superzahl = Console.ReadLine();
//Wiedervorkommen der getippten Zahlen ausschließen
// Daten zur Kontrolle Ausgeben
Console.WriteLine("------------------------------------------------------");
Console.WriteLine("Bitte überprüfen Sie ihre Daten auf Korrektheit!");
Console.WriteLine("------------------------------------------------------");
Console.WriteLine("getippte Zahlen:" + zahlenErfassen.Tipp1
+ " " + zahlenErfassen.Tipp2
+ " " + zahlenErfassen.Tipp3
+ " " + zahlenErfassen.Tipp4
+ " " +zahlenErfassen.Tipp5
+ " " + zahlenErfassen.Tipp6);
Console.WriteLine("Superzahl:" + zahlenErfassen.Superzahl);
Console.WriteLine("------------------------------------------------------");
Console.WriteLine("Sind die Von ihnen getippten Zahlen alle korrekt?");
Console.WriteLine("------------------------------------------------------");
//Rekrusiver Funktionsaufruf
string antwort = "";
antwort = Console.ReadLine();
if(antwort.ToUpper()=="J")
{
Console.WriteLine("------------------------------------------------------");
Console.WriteLine("Okay, fahren wir fort - Die Lottozahlen werden gezogen!");
Console.WriteLine("------------------------------------------------------");
Lottozahlen_ausgeben();
}
else
{
Console.WriteLine("------------------------------------------------------");
Console.WriteLine("Geben Sie ihre gewünschten Zahlen erneut ein:");
Console.WriteLine("------------------------------------------------------");
Lottospiel();
}
}
// Ziehung der Lottozahlen
private static void Lottozahlen_ausgeben()
{
// long anzahlTipps = 7;
//int[] LottoErgebnisse = new int [anzahlTipps];
//Random Lotto = new Random();
//for (long i = 0; i < anzahlTipps; i++)
// {
//int ergebnis = Lotto.Next(1,49);
//LottoErgebnisse[i] = ergebnis;
// }
// //Ausgabe der Lottozahlen
//Console.WriteLine("------------------------------------------------------");
//Console.WriteLine("Die Ergebnisse lauten:" + LottoErgebnisse.ToString() );
//Console.WriteLine("------------------------------------------------------");
//Console.ReadLine();
int r;
Random zufall = new Random();
int[] lotto = new int[7];
Console.Clear();
Console.WriteLine("\t\tErgebnisse der Lottoziehung:");
Console.WriteLine("\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
for (int i = 0; i < 6; i++)
{
lotto[i] = zufall.Next(0, 50);
Console.WriteLine("\t\t" + (i + 1) + ".Zahl: {0}", lotto[i]);
}
Random test = new Random();
r = test.Next(0, 50);
Console.WriteLine("\t\tZusatzzahl: {0}", r);
Console.WriteLine("\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
Console.WriteLine("Anzahl der richtigen Tipps");
Console.ReadLine();
}
}
}
Hallo,
wie du zufallszahlen generierst wobei jede nur einmal vorkommen darf wurde schon oft besporchen unter anderem gibt es auch ein snippet dazu:
[Snippet] Zufallszahlen, die sich nicht wiederholen
zu deinem Problem wie du das einlesen mehrfacher gleicher Zahlen verhinderst schlage ich vor dass in deiner klasse zahlenErfassen zu machen. Erstelle dort einer Methode "NaechstenTippAbgeben(int Tipp)" welche intern die 6 Tipps als liste oder array verwaltet (Die reihenfolge beim lotto ist ja egal. In dieser Mehode kannst du dann auch prüfen ob ein eintrag doppelt vorkommt durch durchgehen und vergleichen der bereits getippten einträge.
Es fehlt dir dann auch leichter zu prüfen wie veiele eingaben mit der ziehung üereinstimmen.
mfg Markus
Bitte beachte unbedingt Wie poste ich richtig? Punkt 6 Code formatieren, und beachte auch, dass überlange Zeilen vermieden werden. Das kannst du auch nachträglich erledigen: den ersten Beitrag mit "editieren" neu aufrufen, bearbeiten, speichern. Das liest sich viel besser.
Wenn die Liste sortiert ist, ist der Vergleich einfacher, auch deshalb schlage ich vor, eine List<int> zu verwenden.
Jürgen
Hallo Markus, danke für die schnelle Antwort, ich versuche dies erst einmal selbst umzusetzen, wäre aber um ein wenig Syntaxhilfe erfreut.
Wir lernen alles im Schnelldurchgang und lediglich Abtippen des Quelltexxtes unseres Profs.
hier der Code meiner Klasse Zahlen:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Hausübung_1__.Klassen
{
class Zahlen
{
//Interne Variablen
private string tipp1;
private string tipp2;
private string tipp3;
private string tipp4;
private string tipp5;
private string tipp6;
private string superzahl;
public int MIN = 1;
public int MAX = 49;
public string Tipp1
{
get
{
return tipp1;
}
set
{
tipp1 = value;
}
}
public string Tipp2
{
get
{
return tipp2;
}
set
{
tipp2 = value;
}
}
public string Tipp3
{
get
{
return tipp3;
}
set
{
tipp3 = value;
}
}
public string Tipp4
{
get
{
return tipp4;
}
set
{
tipp4 = value;
}
}
public string Tipp5
{
get
{
return tipp5;
}
set
{
tipp5 = value;
}
}
public string Tipp6
{
get
{
return tipp6;
}
set
{
tipp6 = value;
}
}
public string Superzahl
{
get
{
return superzahl;
}
set
{
superzahl = value;
}
}
}
}
entschuldige bitte, falls ich für dieses Forum mit meinem Wissen nicht mithalten kann, aber ihr seit nun einmal die kompetenteste Anlaufstelle. Lösche meine Posts, falls du dies für richtig erachtest.
MFG
Auch für absolute Anfänger ist es mir völlig unverständlich, dass Zahlen als string deklariert und verarbeitet werden. Außerdem hast du schon zweimal den Hinweis bekommen, die gezogenen Zahlen intern als Array oder Liste zu speichern. Bitte versuche das doch erst einmal.
Auch Anfänger werden hier akzeptiert. Voraussetzung ist aber, dass eigenes Bemühen erkennbar ist. Posts werden hier nicht gelöscht; aber wenn keine Fortschritte im (Mit-) Denken und keine eigene Bemühungen zu sehen sind, wird eine Diskussion geschlossen. Es liegt nur an dir, ob es dazu kommt oder nicht.
Gruß Jürgen