• Wir werden in den nächsten Tagen verschiedene Wartungsoperationen und Optimierungen am Server durchführen. Es wird zu mehreren Ausfällen kommen, die teilweise auch mehrere Stunden umfassen können.

Pragrammmieren C# - Würfel

zokker13

Moderator
Joined
Oct 12, 2008
Messages
6,719
Points
235
Moin ihr Lieben!
In unserer Förderstunde hatten wir Programmieren und mein Sitznachtbar hat ein Würfelspiel realisiert, wo man zwei zahlen (Hier unterste zahl und oberste Zahl) als Ober und Untergrenze eingeben kann (Einfach welche Zahlen der Würfel nutzen darf).
Außerdem ein weiteres Eingabefeld, womit man eine "Ratezahl" eingeben kann, damit man "spielen" kann.
Ein Button, der eine random Zahl generiert und gleichzeitig prüft, ob meine eingegebene Ratezahl, zuhoch, zuniedrig oder genau richtig ist.

Das ist das Spiel, nun zum Problem, ich kann es nicht mit einen Button realisieren, was mein Nachtbar aber geschafft hat.
Er hatte iwie eine Sperre gemacht oder so, weiß aber nicht mehr, ich geb euch mal den Code:

Code:
private void cmdwürfle_Click(object sender, EventArgs e)
        {
            int Start = Convert.ToInt32(txtStart.Text);             //Die Variable Start wird defeniert und ist die Eingabe aus txtStart.
            int Ende = Convert.ToInt32(txtEnde.Text);               //Die Variable Ende wird defeniert und ist die Eingabe aus txtEnde.
            int Schätzung = Convert.ToInt32(txtEingabe.Text);       //Die variable Schätzung wird defeniert und ist die Eingabe aus txtEingabe.
            int wurf;                                               //Die Variable wurf wied definiert.
            Random würfle = new Random();                           //Die Zufallsvariable würfle wird definiert.
            wurf = würfle.Next(Start, Ende + 1);                    //Die Variable wurf entspricht der Zufallsvariable würfel welche die Grenzwerte Start und Ende besitzen und mit 1 addiert werden.
             
            if (Schätzung == wurf)                                  //Wenn Schätzung gleich wurf ist,
            {
                MessageBox.Show("U Got It");                        //Zeige die Messagebox mit Inhalt an.
            }

            else if (Schätzung > wurf)                              //Wenn die Schätzung größer als wurf ist,
            {
                MessageBox.Show("Zuhoch");                          //Zeige die Messagebox mit Inhalt an.
            }

            else if (Schätzung < wurf)                              //Wenn die Schätzung kleiner als wurf ist,
            {
                MessageBox.Show("zuniedrig");                       //Zeige die Messagebox mit Inhalt an.
            }

          
        }


Hoffe ihr könnt mir helfen =}
 

Attachments

  • Würfless.JPG
    Würfless.JPG
    198.1 KB · Views: 148
Ist der Eventhandler ( cmdwürfle_Click ) registriert ?

Meist in der Designer.cs
this.cmdwürfle.Click += new System.EventHandler(this.cmdwürfle_click);
 
Ein Tipp:
Die Dtaei mit dem Formulardesign würde ich besser (vor allem als Anfänger) besser nicht anrühren ^^
Gonzo hat wohl schon die eigentliche Lösung genannt =)
 
Ein Doppelklick im Designer auf den Button fügt den Eventhandler automatisch hinzu, glaub ich jetzt mal ;)
Ausserdem fügt die IDE möglicherweise dann auch den Funktionskopf
'private void cmdwürfle_Click(object sender, EventArgs e)'
nochmals in die entsprechende Datei ein, den musst du dann ggf. wieder löschen.
 
Kay, werde mal versuchen, den Befehl in den Button zuschreiben, mal sehn obs klappt.

Edit: Hab mal "this.cmdwürfle.Click += new System.EventHandler(this.cmdwürfle_click);" eingefügt und musste feststellen, dass der Würfel immer weiter neu würfelt, und dabei eine Entlosschleife macht, bis er das richtige Ergebnis hat, ich schaus mir nochmal an, weiß aber nicht, ob ichs schaffe.
 
Wäre gut zu wissen was überhaupt passiert?
Macht er nichts wenn du auf den Button drückst?
Wenn ja musst du die Funktion cmdwürfle_Click natürlich beim click auf den Button ausführen lassen, bin jetzt kein C# spezi und das Thema liegt schon weit zurück
 
Wenn ich auf den Button klicke, macht er dennoch neue Zufallszahlen, nur hab ich diesmal das Problem, dass ich durch der ersten Eingabe, eine Schleiße entsteht, die solange aktiv ist, bis ich die Zufallszahl "erraten" habe.

Ich kann also keine andere Zahl angeben und muss warten.
 
Kay, werde mal versuchen, den Befehl in den Button zuschreiben, mal sehn obs klappt.

Edit: Hab mal "this.cmdwürfle.Click += new System.EventHandler(this.cmdwürfle_click);" eingefügt und musste feststellen, dass der Würfel immer weiter neu würfelt, und dabei eine Entlosschleife macht, bis er das richtige Ergebnis hat, ich schaus mir nochmal an, weiß aber nicht, ob ichs schaffe.
Wie bzw. wo hast du das eingefügt ?
 
Probiers mal so. "bool start" musst du Global definieren und beim start "false" setzen.
C#:
bool start = false;
private void cmdwürfle_Click(object sender, EventArgs e)
        {
            int Schätzung = Convert.ToInt32(txtEingabe.Text);       //Die variable Schätzung wird defeniert und ist die Eingabe aus txtEingabe.
            if(start == false)
            {
                          int Start = Convert.ToInt32(txtStart.Text);             //Die Variable Start wird defeniert und ist die Eingabe aus txtStart.
                          int Ende = Convert.ToInt32(txtEnde.Text);               //Die Variable Ende wird defeniert und ist die Eingabe aus txtEnde.
                          int wurf;                                               //Die Variable wurf wied definiert.
                          Random würfle = new Random();                           //Die Zufallsvariable würfle wird definiert.
                          wurf = würfle.Next(Start, Ende + 1);                    //Die Variable wurf entspricht der Zufallsvariable würfel welche die Grenzwerte Start und Ende besitzen und mit 1 addiert werden.
                          start = true;
            }
            if (Schätzung == wurf)                                  //Wenn Schätzung gleich wurf ist,
            {
                MessageBox.Show("U Got It");                        //Zeige die Messagebox mit Inhalt an.
                start = false;
            }

            else if (Schätzung > wurf)                              //Wenn die Schätzung größer als wurf ist,
            {
                MessageBox.Show("Zuhoch");                          //Zeige die Messagebox mit Inhalt an.
            }

            else if (Schätzung < wurf)                              //Wenn die Schätzung kleiner als wurf ist,
            {
                MessageBox.Show("zuniedrig");                       //Zeige die Messagebox mit Inhalt an.
            }

          
        }

Int wurf sollte auch global sein

Edit: hab gerade mitbekommen dass es in c# keine globalen variablen mehr geben soll. also wirds wahrscheinlich nicht funktionieren sry
 
Last edited:
Innerhalb einer Klasse gibt es globale Variablen, ist hier aber völlig unnötig da die Funktion eh nur aufgerufen wird wenn man auf den Button drückt.
Ich vermute mal, dass der Eventhandler an der falschen Stelle deklariert ist, die Funktion als solche sieht korrekt aus.
 
Ich habe deinen Code in den Button, ganz obe, über den If- Befehl gesetzt.
 
Dort ist es natürlich falsch, schau dir meine Beiträge weiter oben an ( beide ), da habe ich beschrieben wo es hingehört und wie du es dort hinbekommst.
Wenn es dir nur darum geht es zum Laufen zu bekommen, hänge das Projekt hier als Anhang rein, dann bastel ich dir das hin ;)
 
ich komm echt nicht kla :D
Hier die File, danke!
 

Attachments

  • Spielauswürfel.zip
    35.8 KB · Views: 8
Bitte schön ;)
Allerdings kann man damit ja immer nur ein mal pro würfeln raten.
 

Attachments

  • Spielauswürfel.zip
    40.2 KB · Views: 15
Back
Top Bottom