カード・ゲームの制作 VB6
 (6) 勝敗判定と得点計算 前へ 目次へ 次へ 

 親と場にカードがそろったので、勝ち負け判定の処理をプログラムする。

 1. オブジェクトの追加

 下図のようにオブジェクトを追加する。


◆プロパティ

・ラベル(Label)のプロパティ(配列)
(オブジェクト名) lblHantei
Caption lblHantei
Index 0  (0〜4)の5個配置
Visible False

 ラベルには勝ち負けの判定結果を表示する。


 2. 勝ち負けの判定と得点計算

 親と場のカードからHyoukaプロシージャを使って役の点を取得する。親の点と場の点を比較して勝ち負けを判定する。勝った場合は得点を加算し、負けた場合は減算する。引き分けのときは得点は変わらない。
 処理はGame2プロシージャの親の処理の後に追加する。

・プログラムリスト

Private Sub Game2()
Dim n As Integer, pp As Integer
Dim rr As Integer

Dim oya As Integer, ko As Integer
 
    '場の処理
    For n = 3 To BASYO * 3 Step 3
    << 省 略 >>
       CardMove picWork, picCard(2) 'カード移動
        CARDNext = CARDNext + 1 '次に取り出すカード番号
   End If

    '勝敗判定・得点計算
    oya = hyouka(0)    '親の役
    lblHantei(0).Caption = Yaku(oya)    '役メッセージ
    lblHantei(0).Visible = True
    For n = 1 To 4
        pp = n * 3
        ko = hyouka(pp)       '子の役
        If oya = 999 Then     '親 999
            lblHantei(n).Caption = "(負)" & Yaku(ko)
            If pp = SelCard Then    'プレーヤー 得点計算
                lblTokuten.Caption = Val(lblTokuten.Caption) - cmbKaketen.ItemData(cmbKaketen.ListIndex)
            End If
        ElseIf ko = 998 Then    '998
            lblHantei(n).Caption = "(勝)シッピン"
            If pp = SelCard Then    'プレーヤー 得点計算
                lblTokuten.Caption = Val(lblTokuten.Caption) + cmbKaketen.ItemData(cmbKaketen.ListIndex) * 3
            End If
        ElseIf oya < ko Then    '親負け
            lblHantei(n).Caption = "(勝)" & Yaku(ko)
            If pp = SelCard Then    'プレーヤー
                If ko = 888 Then    '得点計算
                    lblTokuten.Caption = Val(lblTokuten.Caption) + cmbKaketen.ItemData(cmbKaketen.ListIndex) * 10
                ElseIf ko = 777 Or ko = 555 Then
                    lblTokuten.Caption = Val(lblTokuten.Caption) + cmbKaketen.ItemData(cmbKaketen.ListIndex) * 5
                Else
                    lblTokuten.Caption = Val(lblTokuten.Caption) + cmbKaketen.ItemData(cmbKaketen.ListIndex)
                End If
            End If
        ElseIf oya = ko Then    '引き分け
            lblHantei(n).Caption = "(分)" & Yaku(ko)
        Else
            lblHantei(n).Caption = "(負)" & Yaku(ko)
            If pp = SelCard Then    'プレーヤー 得点計算
                lblTokuten.Caption = Val(lblTokuten.Caption) - cmbKaketen.ItemData(cmbKaketen.ListIndex)
            End If
        End If
        lblHantei(n).Visible = True
    Next n
End Sub
 
Private Function Yaku(ten As Integer)    '役のメッセージ
    If ten = 999 Then
        Yaku = "クッピン"
    ElseIf ten = 998 Then
        Yaku = "シッピン"
    ElseIf ten = 888 Or ten = 777 Then
        Yaku = "嵐"
    ElseIf ten = 555 Then
        Yaku = "順子(シュンツ)"
    Else
        Yaku = "計:" & str(ten)
    End If
End Function

 役のメッセージを作るため、ファンクションプロシーじゃYakuで役名または合計のメッセージを作成している。
 ここまでで、実行すると1回だけゲームができる。

 次に、フローチャートでは続けるかどうかを入力する処理であるが、その前にゲームオーバーの判定が必要である。ゲームオーバーは得点がなくなったときである。


 (6) 勝敗判定と得点計算 前へ 目次へ 次へ 
Copyright © 2005 Hiroshi Masuda 

 

 

inserted by FC2 system