Laden...

Lottospiel (Consolenpgm): Wie Tipp mit Ziehung vergleichen?

Erstellt von Magixx vor 14 Jahren Letzter Beitrag vor 14 Jahren 5.878 Views
M
Magixx Themenstarter:in
5 Beiträge seit 2009
vor 14 Jahren
Lottospiel (Consolenpgm): Wie Tipp mit Ziehung vergleichen?

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:

  1. Ich habe es soweit geschafft, dass Zahlen aus einer selbst defineirten Klasse eingelesen werde, und diese Als Tipps und Superzahl gespeichert werden.

  2. Auf die Funktion der Zufallszahl habe ich mir von einem vorherigen Beitrag hier im Forum abgeschaut.

Fragen:

  1. Ich habe versucht die richtig getippten Ergebnisse über eine if Funktion mit den zufallswertes des Arrays der Zufallszahlen miteinander zu vergleichen. Ich komme aber nicht auf die zu vergleichenden Werte.

Wie heißen die Variablen, die ich mit einander vergleichen muss?
Und wie soll der code genau aussehen.

  1. Weiterhin habe ich mich gefragt, wie ich es handeln kann, dass eine Zahl nicht zweimal vorkommt. Im Code seht ihr meine überlegung dazu unter Tipp 2, was aber nicht klappt.

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();
    }
    }
}

M
205 Beiträge seit 2008
vor 14 Jahren

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

J
3.331 Beiträge seit 2006
vor 14 Jahren

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

M
Magixx Themenstarter:in
5 Beiträge seit 2009
vor 14 Jahren

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;
            }
        }
        
       
    }
}

M
205 Beiträge seit 2008
vor 14 Jahren

Hallo,

bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1

mfg

M
Magixx Themenstarter:in
5 Beiträge seit 2009
vor 14 Jahren

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

J
3.331 Beiträge seit 2006
vor 14 Jahren

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