§2 モグラたたきゲームの制作 VB6
 (6) 改良いろいろ U 前へ 目次へ 次へ 

 2. ヒットしたときの得点が高い「ボーナスモグラ」を追加する。

 ここで必要な処理は、@「ボーナスモグラを出す処理」と、A「ボーナスモグラをヒットしたときの処理」の2つである。

@「ボーナスモグラを出す処理」
 モグラを出す処理はTimer1_Timerプロシージャの中である(次のプログラムリスト)。

Private Sub Timer1_Timer()
    Static rr As Integer        'Static
    Dim rn As Integer

    If rr <= 8 Then        '8以下の時にボタンの色を元に戻す
        Command1(rr).BackColor = QBColor(8)    '前回色を変えたボタンの色を元に戻す
    End If
    Do
        rn = Ransuu(0, 17)        '乱数
        If rn <> rr Then          '前回と違う位置
            Exit Do
        End If
    Loop
    If rn <= 8 Then        '8以下の時にボタンの色を変える
        Command1(rn).BackColor = QBColor(4)    'モグラの色設定
    End If
    rr = rn
End Sub

 ボーナスモグラの色はQBColor(12)(明るい赤)とする。モグラの色設定(上のプログラムリスト赤色部分)でボーナスモグラか普通のモグラかを決めて設定する色を変えることになる。

 どちらのモグラを出すかは、やはり乱数を使うことになる。
 例えば、1/10の確率でボーナスモグラを出すことにすると、Ransuu(1,10)で10までの乱数を発生して1のときだけボーナスモグラを出すようにすればよい。確率を1/50にするにはRansuu(1,50)というように関数Ransuuで発生する乱数の範囲で調整できる。

・プログラムリスト

Private Sub Timer1_Timer()
    Static rr As Integer        'Static
    Dim rn As Integer

    If rr <= 8 Then        '8以下の時にボタンの色を元に戻す
        Command1(rr).BackColor = QBColor(8)    '前回色を変えたボタンの色を元に戻す
    End If
    Do
        rn = Ransuu(0, 17)        '乱数
        If rn <> rr Then          '前回と違う位置
            Exit Do
        End If
    Loop
    If rn <= 8 Then        '8以下の時にボタンの色を変える
        If Ransuu(1, 2) = 1 Then
            Command1(rn).BackColor = QBColor(12)    'ボーナスモグラの色設定
        Else
            Command1(rn).BackColor = QBColor(4)     'モグラの色設定
        End If
    End If
    rr = rn
End Sub

 上のプログラムリストではボーナスモグラの出る確率を1/2にしている。これは動作テストをする必要があるのでテストしやすいように確率を高くしている。テストが終われば確率を適当に下げることを忘れないようにすること。

 実行してボーナスモグラ(明るい赤色)が出るか確認する。ただし、ヒットしても得点にはならない。


A「ボーナスモグラをヒットしたときの処理」
 ヒットを判定する処理はCommand1_Clickプロシージャの中である(次のプログラムリスト)。

Private Sub Command1_Click(Index As Integer)
    If Command1(Index).BackColor = QBColor(4) Then    'ヒットの判定
        Tensuu = Tensuu + 1        'ヒットした。得点加算。
    End If
    Label1.Caption = "得点=" & Str(Tensuu)    '得点表示
End Sub

 ボーナスモグラの色はQBColor(12)であるから、If文を追加すればよい。ここでは、ボーナスを5点とする。

Private Sub Command1_Click(Index As Integer)
    If Command1(Index).BackColor = QBColor(4) Then    'ヒットの判定
        Tensuu = Tensuu + 1        'ヒットした。得点加算。
    ElseIf Command1(Index).BackColor = QBColor(12) Then   'ボーナスヒットの判定
        Tensuu = Tensuu + 5        'ヒットした。得点加算。
    End If
    Label1.Caption = "得点=" & Str(Tensuu)    '得点表示
End Sub


 (6) 改良いろいろ U 前へ 目次へ 次へ 
Copyright © 2001,2002 Hiroshi Masuda 

 

 

inserted by FC2 system