投稿日 | : 2007/07/22(Sun) 13:19 |
投稿者 | : tea |
Eメール | : |
URL | : |
タイトル | : 前回の投稿では解決していませんでした・・・。 |
またよろしくお願いします。どうも解決してなかったみたいです・・・。
タイマーが00:00秒になった直後からタイマーを5秒間待機させて、その間に
プレイヤーが1回だけファウルカウントされた場合にゲームタイマーを1秒戻
して00:01から再開してカウントダウンさせて再度00:00秒になったら次の
クォーター(時間)移動へしたいのです。
しかし、以下のコードではタイマーを5秒間待機させている最中にファウルカ
ウントが1回あっても何事もなかったように次のクォーターへと進んでしまい
ます。
If vsGameTime.Value = 0 Thenが2回記述されているのが問題なんでしょうか?
1秒戻した後のカウントダウンで00:00秒になった場合にブザー音のコードに
は記述していないのにブザー音がなるのも何故なのか?わかりません。
ブレークポイントなどを使って順を追ってコードを見てもわかりませんでした。
どうか教えてください。
よろしくお願いします。
'タイマー'
Private Sub tmrCountDown_Timer()
Dim i As Integer
Dim l As Integer
Dim k As Integer
If mp.TimeOutting Then
'' 更新と終了判断。
With vsTimeOut(mp.TimeOutintgTeamIndex)
.Value = .Value - 1
'50秒経過後のブザー'
If .Value = 10 Then
BeepBusy
End If
If .Value <> 0 Then Exit Sub
End With
'' タイムアウトの終了。
'60秒経過後のブザー'
BeepBusy
With mp
.TimeOutting = False
resetTimeOutClock .TimeOutintgTeamIndex
cmdTimeOut(.TimeOutintgTeamIndex).Enabled = Game.Team(.TimeOutintgTeamIndex).CanCurrentQuarterTimeOut
vsTimeOut(.TimeOutintgTeamIndex).Enabled = False
tmrCountDown.Enabled = False
End With
Else
'---オプションボタンで非表示を選択した場合---
If vs24Second.Visible = False Then
'---動作させない---
vs24Second.Enabled = False
Else
'' 更新。
With vs24Second
If 0 < .Value Then
.Value = .Value - 1
End If
'残り5秒から1秒までNBA風にクロック音 '
For i = 1 To 5
If .Value = i Then
Beep7
End If
Next
End With
End If
'ゲームタイムタイマー(カウントダウンタイマー)
With vsGameTime
If 0 < .Value Then
.Value = .Value - 1
End If
End With
'' クオーターの終了。
'' 次のクオーターへ表示を更新して、停止。
If vsGameTime.Value = 0 Then
BeepBuzzer2
'---ブザービーターに備えて5秒間遅らせる。----
Delay 5000
For l = 0 To 1
For k = 1 To 5
'ゲームメンバーの誰かがファウルカウントされなかった場合
If Game.Team(l).GameMember(k).FoulCount = 0 Then
'時間待機はなし
Delay 0
'ゲームメンバーの誰かが1回だけファウルカウントされた場合
ElseIf Game.Team(l).GameMember(k).FoulCount = 1 Then
vsGameTime.Enabled = True
'ゲームタイマーに1秒加えて00:01にする。
vsGameTime.Value = 1
'ゲームスタートボタンを非表示にする。
cmdGameStart.Enabled = False
'ゲーム再開ボタンを表示にする。
cmdGamePause.Enabled = True
'内側のループ(k)を抜ける。
Exit For
End If
Next k
'外側のループ(l)を抜ける。
Exit For
Next l
'ゲームタイマーが00:01秒の時
Select Case vsGameTime.Value
Case 0
'00:00秒になったらカウントダウンタイマーを停止。
tmrCountDown.Enabled = False
'次のクォーターへ移る。
readyNextQuarter
Case 1
'ゲームタイムを一時停止
pauseGame
'コマンドボタンに"ゲーム再開"を表示
cmdGamePause.Caption = sPiResetPuase
'カウントダウンタイマーを停止しておいてcmdGamePauseボタンを
'クリックしたらカウントダウンタイマーを再開。
End Select
'00:00秒になったらカウントダウンタイマーを停止。
tmrCountDown.Enabled = False
'次のクォーターへ移る。
'readyNextQuarter
'' 24 秒の終了。
'' ポーズ。ポーズ再開で、進みます。
ElseIf vs24Second.Value = 0 Then
'---オプションボタンで非表示を選択した場合---
If vs24Second.Visible = False Then
'---動作させない---
vs24Second.Enabled = False
Else
BeepBuzzer
resetShotClock
pauseGame
End If
End If
End If
End Sub