Random Wort, Random Colorfont und Fontsize verbinden



  • 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.



  • oh okay wusste ich nicht.

    ich glaub der text ist zulange oder ich bin grade zu dumm den hier einzufügen.



  • Nein einfach die Projektfiles irgendwo hosten. Nicht alles hier pasten.

    Wie gesagt, wenn alles fertig ist 😉



  • ja ich weiß grade nicht wie ich es hinkriege, dass er jede richtige antwort (click) zählt, weißt du da evtl was?



  • Bitte genauer beschreiben und ein wenig relevanten Code zeigen.



  • Also man klickt auf Play, dann wird das ausgeführt.

    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;
                formsTimer.Interval = 1000;
                startSeconds = (int)numericUpDown1.Value + 1;
                formsTimer.Enabled = true;
                bluebox.Enabled = true;
                redbox.Enabled = true;
                lilabox.Enabled = true;
                greenbox.Enabled = true;
                yellowbox.Enabled = true;
                pinkbox.Enabled = true;
                orangebox.Enabled = true;
                grewbox.Enabled = true;
                brownbox.Enabled = true;
            }
    

    Dann läuft der Timer runter und in dieser Zeit, wo der Timer läuft, soll jeder click auf einen button gezählt werden. Und wenn der Timer auf 0 gelaufen ist, soll die Anzahl an Clicks angezeigt werden.

    TimerEvent Code:

    private void TimerEvent(object sender, EventArgs e)
            {
                numericUpDown1.Value = --startSeconds;
    
                if ((startSeconds == 0) && (germanToolStripMenuItem.Checked == true))
                {
                    formsTimer.Enabled = false;
                    label1.Text = "Die Zeit ist abgelaufen!";
                    label1.Location = new Point(140, 50);
                    label1.BackColor = Color.White;
                    label1.ForeColor = Color.Red;
                    FontFamily myFontFamily = new FontFamily("Microsoft Sans Serif");
                    Font myFont = new System.Drawing.Font(myFontFamily, 15, FontStyle.Bold, GraphicsUnit.Pixel);
                    label1.Font = myFont;
                    button1.Enabled = true;
                    button1.Text = "Play Again?";
                    numericUpDown1.Enabled = true;
                    bluebox.Enabled = false;
                    redbox.Enabled = false;
                    lilabox.Enabled = false;
                    greenbox.Enabled = false;
                    yellowbox.Enabled = false;
                    pinkbox.Enabled = false;
                    orangebox.Enabled = false;
                    grewbox.Enabled = false;
                    brownbox.Enabled = false;
                }
                else if ((startSeconds == 0) && (englishToolStripMenuItem.Checked == true))
                {
                    formsTimer.Enabled = false;
                    label1.Text = "The Time is over!";
                    label1.Location = new Point(140, 50);
                    label1.BackColor = Color.White;
                    label1.ForeColor = Color.Red;
                    FontFamily myFontFamily = new FontFamily("Microsoft Sans Serif");
                    Font myFont = new System.Drawing.Font(myFontFamily, 15, FontStyle.Bold, GraphicsUnit.Pixel);
                    label1.Font = myFont;
                    button1.Enabled = true;
                    button1.Text = "Play Again?";
                    numericUpDown1.Enabled = true;
                    bluebox.Enabled = false;
                    redbox.Enabled = false;
                    lilabox.Enabled = false;
                    greenbox.Enabled = false;
                    yellowbox.Enabled = false;
                    pinkbox.Enabled = false;
                    orangebox.Enabled = false;
                    grewbox.Enabled = false;
                    brownbox.Enabled = false;
                }
            }
    

Anmelden zum Antworten