カード・ゲームの制作 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 |