• 締切済み

C#のTimerについて

こんにちは。 C#のプログラミングについてわからないところがありますのでご回答いただければと思います。 私はC#を用いて簡単な計算ゲームを作成しています。 その計算ゲームには対戦相手がおり、対戦相手の正解数はTimerを用いてユーザーに練習問題を解かせた時の解答時間を基に勝手に正解数が増えていくといったシステムにしています。 そこで1つ解決できない問題が浮上しました。 対戦相手の数を4人にして4人バラバラに解答しているような動きにしたいため、Timerを4つ設けそれぞれを動かせるようなプログラムを作成しました。 エラーもなく普通に実行できます。 しかしTimer1とTimer2は正常に動き対戦相手の正解数が増えていくのですが、Timer3とTimer4が全く反応していないのか、動かず、対戦相手の正解数が増えません。 プログラムの内容はTimer1~Timer4も対応する変数が違うこと以外一緒です。 原因は何であるかわかる方教えてください! C#ではTimerの使用数が2つまでとなっている?ってことなのでしょうか? スレッドを用いる方法もあると思いますが、Timerを4つ並べてそれぞれを動作させる方法があるのでしたら是非教えてください。 最後になりましたが、わかりにくい文章で本当に申し訳ありません。 よろしくお願いします。

みんなの回答

回答No.2

先ほどの回答のものです恥ずかしながらプログラムをミスりました timerは4個目でも5個でもちゃんと動きました。 (c# 2010 expressを使用しています。) 一応プログラムはこんな感じです。 int i1=0; int i2=0; int i3=0; int i4=0; int i5=0; private void timer1_Tick_1(object sender, EventArgs e) { i1++; textBox1.Text=i1.ToString(); } private void timer2_Tick_1(object sender, EventArgs e) { i2++; textBox2.Text=i2.ToString(); } private void timer3_Tick_1(object sender, EventArgs e) { i3++; textBox3.Text=i3.ToString(); } private void timer4_Tick_1(object sender, EventArgs e) { i4++; textBox4.Text=i4.ToString(); } private void timer5_Tick(object sender, EventArgs e) { i5++; textBox5.Text=i5.ToString(); }

ellwing_13
質問者

お礼

丁寧にプログラムまで載せていただきありがとうございます!! Timerは何個でもいけるみたいですね♪ 自分のプログラム改善させていただきます。 最初の回答の方もまとめてお礼させていただきますが、すごく賢い考え方でして参考にしたいと思います!! 本当にありがとうございました。

回答No.1

試してみましたが 私の環境ではtimerは3個まで動き4個目は動きません? (c# 2010 expressを使用しています。) プログラムの目的は、対戦相手の数を4人を正解数をバラバラにUPする 事だと思います。 簡単に言うと4個の変数をランダムにカウントアップすればよいのですね? このような時は少し間隔の短いTimerを1個用意して たとえば0から3の乱数を発生して  0の時は1人目のカウントアップ  1の時は2人目のカウントアップ  2の時は3人目のカウントアップ  3の時は4人目のカウントアップ としてはいかがでしょう?

関連するQ&A