リバース Game の制作 VB6
 (3) 駒を打つ 前へ 目次へ 次へ 

 3. はさめた駒を返す処理

 ファンクションプロシージャ(関数)isHasamuではさめると判断できれば、駒を返す処理が必要になる。駒を返す処理はサブプロシージャKomaKaesuとして作成する。
 サブプロシージャKomaKaesuには、駒を置く場所の番号を渡して、そこを基準に配列HoukouFを調べながら駒を返す、というよりも自分の駒に置き直していく。

・プログラムリスト

Private Sub picField_Click(Index As Integer)
'プレイヤーが置き場所をクリック
    If isHasamu(Index) = True Then     'はさめる
        lblMsg2.Caption = "置けます。"  '←ここは削除する。
        KomaKaesu Index             'はさめた駒を返す
    Else
        lblMsg2.Caption = "そこには置けません。"
    End If
End Sub

Private Sub KomaKaesu(ban As Integer)
'駒を返す
    Dim n As Integer, x As Integer, y As Integer
    Dim nn As Integer
    
    x = (ban Mod 8)     'x座標
    y = Int(ban / 8)    'y座標
    Field(x, y) = Junban        '#1 自分の駒設定
    picField(ban).Picture = picKoma(Junban).Picture
    For n = 0 To 7          '#2 8方向分
        x = (ban Mod 8)         'x座標
        y = Int(ban / 8)        'y座標
        Do While HoukouF(n) <> 0    '#3 0まで繰り返す
            x = x + Hx(n)       'x方向移動
            y = y + Hy(n)       'y方向移動
            Field(x, y) = Junban    '自分の駒設定
            picField(y * 8 + x).Picture = picKoma(Junban).Picture
            HoukouF(n) = HoukouF(n) - 1
        Loop
    Next n
End Sub

#1 置いた(クリックした)場所に自分の駒のデータ(Junban)と画像(picKoma(Junban).picture)を設定する。

#2 For文で8方向分を調べる。

#3 相手の駒がいくつあるかわからないので、Do〜LoopでHoukouF(n)が0になるまで(0と等しくない間)繰り返す。


 ここで実行して、黒をはさむ位置をクリックするとはさまれた黒が白に変わる。ただし、順番交代の処理がないので、黒2個はさむと終わりである。はさめないときはメッセージ「そこには置けません。」が表示される。


 4. 順番交代の処理

 順番交代の処理は、変数JunbanがWHITE(白)であればBLACK(黒)に、BLACK(黒)であればWHITE(白)に設定し直すだけであるので、picField_Clickプロシージャに書くことにする。

・プログラムリスト

Private Sub picField_Click(Index As Integer)
'プレイヤーが置き場所をクリック
    If isHasamu(Index) = True Then     'はさめる
        KomaKaesu Index             'はさめた駒を返す
        If Junban = WHITE Then  '順番交代
            Junban = BLACK
        Else
            Junban = WHITE
        End If
        lblMsg.Caption = JunbanMsg(Junban)
    Else
        lblMsg2.Caption = "そこには置けません。"
    End If
End Sub


 実行して白先手ではさめる位置をクリックすると、はさめた駒が返る。ウィンドウ右上にこれから打つ方、すなわち白か黒がメッセージとして表示される。
 64個すべて置いても、途中で置く場所がなくなってもプログラムは終了しない。


 (3) 駒を打つ 前へ 目次へ 次へ 
Copyright © 2002 Hiroshi Masuda 

 

 

inserted by FC2 system