リバース 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 |