投稿日 | : 2007/07/21(Sat) 08:28 |
投稿者 | : tea |
Eメール | : |
URL | : |
タイトル | : 時間待機中にカウントがあった場合のコードの記述を教えてください。 |
前回の投稿でGetTickCountを使うことで時間を待機させる方法が理解できた
のですが、新たな問題が出てきました。
ゲームタイムが00:00秒になった場合にGetTickCountで00:00秒を5秒間待
機させて、その5秒間の間にファウルがなかった(回数 0)場合には、その
まま次のゲームタイムを表示させる。
ファウルが1回だけあった場合にはゲームタイムを00:01に戻してゲームタ
イムを再開する。
というように動作させたいのですが、うまくいきません・・・。
下記のコードではFor〜Next文があるために繰り返し処理を行ってしまいファ
ウルが1回カウントされた後も繰り返し処理が行われCase 1を実行した後に
Case 0も実行してしまうために思うような動作とはなりません。
どうか教えてください。
visual Basic 中学校の掲示板にも以下のコードとは若干違う質問をしていま
すが、解決した場合にはそちらにも報告を必ず行いますのでご理解ください。
よろしくお願いします。
'GetTickCount(待機時間)のコード
Private Function Delay(ByVal t As Long)
Dim At_0 As Long, At_1 As Long
At_0 = GetTickCount
At_1 = At_0
While ((At_1 - At_0) < t)
At_1 = GetTickCount
DoEvents
Wend
End Function
'ゲームタイムが0秒になった場合
If vsGameTime.Value = 0 Then
'ブザー音
BeepBuzzer2
'ブザービーターに備えて00:00秒のまま5秒間待機させる。
Delay 5000
'チームA&B
For l = 0 To 1
'プレイヤーは5名
For k = 1 To 5
'5秒間の待機中にファウルがカウントされなかったら抜ける。
'ファウルが1回カウントされた場合には時間を1秒戻して、
'再度00:01からタイマーを再開する。
Select Case Game.Team(l).Player(k).FoulCount
Case 0
Exit For
Exit For
Case 1
'タイマー
vsGameTime.Enabled = True
'1秒加える。
vsGameTime.Value = 1
ゲームスタートボタンを非表示にする。
cmdGameStart.Enabled = False
'再開ボタンを表示する。
cmdGamePause.Enabled = True
End Select
Next
Next
'タイマーを停止。
tmrCountDown.Enabled = False
'次のクォーター表示へ進む。
readyNextQuarter
End if