Random Wort, Random Colorfont und Fontsize verbinden



  • so jetzt hänge ich.

    numericUpDown1.Enabled = false;
                button1.Enabled = false;
                System.Windows.Forms.Timer formsTimer = new System.Windows.Forms.Timer();
                formsTimer.Interval = 1000;
                formsTimer.Enabled = true;
    

    wie kriege ich jetzt hin, dass der Timer die Zahl aus der NumericUpDown ausließt?



  • Der Timer ruft in dem von dir angegebenen Intervall das Tick-Event auf.

    formsTimer.Tick += new EventHandler(TimerEvent);
    
    private void TimerEvent(Object myObject, EventArgs myEventArgs)
    {
        //hier numericupdown-value auslesen und verarbeiten
    }
    

    Den Event-Handler (TimerEvent) implementierst Du wie jede andere Methode auch. Der einzige Unterschied ist eben die automatische und periodische Ausführung durch den Timer.

    Die Referenz auf das Timer-Objekt sollte NICHT lokal in einer Methode (z.B. in einem Eventhandler eines Controls) existieren. Sonst kommt der Garbage-Collector und kassiert den Timer ein. Die Timer-Referenz sollte einfach ein Feld der Form-Klasse sein.



  • danke, aber ich weiß ja eben nicht, wie ich den numericupdown auslese und verarbeite, den rest weiß ich ja 🙂

    trotzdem danke.



  • Na einfach numericUpDown1.Value verwenden.
    Das ist glaube ich ein decimal. Also entsprechend in ein int oder so casten, je nachdem was du brauchst.



  • ich versuchs mal. einen moment.



  • klappt nicht so wie ich will. Der Timer soll ja nur ausgeführt werden, wenn button1 (Play) betätigt wird. Ich bin grade etwas verwirrt..



  • Zeig mal deinen Code.



  • public Form1()
            {
                InitializeComponent();
                englishToolStripMenuItem.Checked = true;
                label1.Text = "Waiting for Play!";
                label2.Text = "Playtime: ";
                System.Windows.Forms.Timer formsTimer = new System.Windows.Forms.Timer();
                formsTimer.Interval = 1000;
                formsTimer.Enabled = true;
                formsTimer.Tick += new EventHandler(TimerEvent);
            }
    

    und jetzt weiß ich nicht, wie ich da bei Button1_Click drauf zugreifen soll.



  • Was soll beim Button-click genau passieren?



  • private void button1_Click(object sender, EventArgs e)
            {
                if (germanToolStripMenuItem.Checked == true)
                {
                    string[] strCollection = { "blau", "braun", "gelb", "lila", "orange", "pink", "rot", "grau", "grün" };
                    System.Random rnd = new Random();
                    FontFamily myFontFamily = new FontFamily("Modern No. 20");
                    Font myFont = new System.Drawing.Font(myFontFamily, 16, FontStyle.Bold, GraphicsUnit.Pixel);
                    label1.Location = new Point(175, 50);
                    label1.Font = myFont;
                    label1.Text = strCollection[rnd.Next(strCollection.Length)];
                    label1.BackColor = farben.RandomColor();
                }
                else
                {
                    string[] strCollection = { "blue", "brown", "yellow", "purple", "orange", "pink", "red", "grew", "green" };
                    System.Random rnd = new Random();
                    FontFamily myFontFamily = new FontFamily("Modern No. 20");
                    Font myFont = new System.Drawing.Font(myFontFamily, 16, FontStyle.Bold, GraphicsUnit.Pixel);
                    label1.Location = new Point(175, 50);
                    label1.Font = myFont;
                    label1.Text = strCollection[rnd.Next(strCollection.Length)];
                    label1.BackColor = farben.RandomColor();
                }
                numericUpDown1.Enabled = false;
                button1.Enabled = false;
    }
    

    und dann soll halt noch der timer starten (eben die Spielzeit, die eingegeben wurde in der numericupdown)



  • //Als Feld wegen dem Garbage-Collector
    System.Windows.Forms.Timer formsTimer
    
    public Form1()
    {
    	InitializeComponent();
    	englishToolStripMenuItem.Checked = true;
    	label1.Text = "Waiting for Play!";
    	label2.Text = "Playtime: ";
    	formsTimer = new System.Windows.Forms.Timer();
    
    	//formsTimer.Interval = 1000;
    	//hier startest du den timer. das ist wohl so nicht gewollt.
    	//formsTimer.Enabled = true;
    	formsTimer.Tick += new EventHandler(TimerEvent);
    } 
    
    private void button1_Click(object sender, EventArgs e)
    {
    	//evtl (int) cast notwendig. weiß gerade den typ von Interval nicht
        formsTimer.Interval = numericUpDown1.Value
    	formsTimer.Enabled = true
    } 
    
    private void TimerEvent(Object myObject, EventArgs myEventArgs)
    {
        //quizzfrage: was passiert hier?
    
    }
    


  • ja ist vom typ int. ja die quizfrage ist echt gut, ich habe mal sowas von keinen plan..



  • Hahaha....

    Das musst schon du wissen.
    Soll der Wert vom numericupdown runtergezählt werden?



  • ja soll sie. wird wohl über ne schleife laufen oder?



  • Nein keine Schleife. Du hast ja einen Timer der im Sekundentakt runterzählt.

    System.Windows.Forms.Timer formsTimer
    int startSeconds;
    
    public Form1()
    {
    
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
    	//wahrscheinlich wolltest du sowas:
            formsTimer.Interval = 1000;
            startSeconds = (int)numericUpDown1.Value + 1;
    	formsTimer.Enabled = true
    } 
    
    private void TimerEvent(Object myObject, EventArgs myEventArgs)
    {
        numericUpDown1.Value = --startSeconds;
    
        if(startSeconds == 0)
        {
             formsTimer.Enabled = false
            //weitere aktionen nach timer-ende
        }
    
    }
    


  • ich bau mal eben aus was danach passiert und dann teste ich mal. Danke schonmal 🙂



  • Läuft Perfekt! Danke! 🙂



  • Bitte.

    Wenn Du fertig bist kannst Du das Spiel ja mal irgendwo hochladen.



  • ich werde dann das setup dazu hochladen 🙂

    muss nurnoch irgendwie einen zähler machen, der die richtigen antworten zählt und am ende ausgibt, stellt mich wieder vor ein rätsel aber okay 😃



  • RelaxRealistic schrieb:

    ich werde dann das setup dazu hochladen 🙂

    Bitte nur Code sonst führt das hier niemand aus, der noch bei Verstand ist. V.a. weil ein Setup mit Admin-Rechten läuft und nicht durch den NET-Reflector geht.


Anmelden zum Antworten