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