私はおそらくストップウォッチを使用します - ユーザーが正常にクリックしたときにカウントを0にリセットする方法がわからないため、タイマーは難しいでしょう。
次のようにストップウォッチを宣言します。
Private maxWaitTimer As New Stopwatch
次に、おそらく「ゲームループ」タイプのものをフォームロードイベントで使用できます...おそらく次のようなものです:
maxWaitStopwatch.Start()
While(GameIsRunning)
If maxWaitStopwatch.ElapsedMilliseconds > 5000 Then
Losses = Losses + 1
selectNewPictureBox()
maxWaitStopwatch.Restart()
Else
Application.DoEvents() 'this gives the program a chance to execute the picture box click event, among other things (resize, drag, etc... since we are spinning in a loop)
End If
'System.Threading.Thread.Sleep(100) 'uncommenting this line will prevent it from maxing out your processor, although it will be slightly less responsive
End While
画像ボックスは次のように実装できます。
Wins = Wins + 1
selectNewPictureBox()
maxWaitStopwatch.Restart()
基本的に、プログラムはループを回って、タイマーが経過したかどうかを確認し、経過している場合は画像を移動します。
クリック イベントはスコアをインクリメントします。ループの「application.doevents()」部分で実行される可能性があります。
sleep(100) を追加すると、速度がわずかに低下します (約 100 ミリ秒ほど正確ではありません) が、大量の CPU を使用するのを防ぐことができます。おそらく速度の違いに気付かないでしょう。
ただし、これを行うより良い方法があるかもしれません...
編集 - スティーブンが言ったことを反映して、ループの代わりにタイマーを使用した方が良いでしょう:
ユーザーが画像をクリックしたときに stop() を使用し、その後 start() を呼び出します。
(リセットされるとは思いませんでしたが、どうやらリセットされるようです)