点数計算は地方によってさまざま

ドボンでは誰かが上がったときに残されたカードで点数計算をおこないます。ただ点数の付け方にはこれまたローカルルールがあります。とくに相手にカードを取らせる「2」やどんなカードに対しても出すことができる「8」には高い点数がつけられる傾向があります。

ここでは

点数をつける C#でドボンをつくる

役札(A, 2, 8, J)は20点
絵札(Q, K)は10点
その他(3, 4, 5, 6, 7, 9, 10)は数字通りの点数

という計算法にしていますが、なかにはもっと過酷なものもあるそうです。

【パーティーゲーム】ギャンブル・ドボンのすすめ | 沼の底ブログ

ここでは

「絵札」=10
「2」=50
1の位は四捨五入する

というルールになっています。「2」は50点。厳しいルールです。

さらにドボンされた場合は(自身の手札 + ドボンしたプレイヤーの手札)を四捨五入後、さらに3を掛けるという鬼ルールです。

それからこんな計算法もあるそうです。

ドボンゲームの遊び方

誰かからドボンした場合、それ以外のプレイヤーは普通に計算しますが、ドボンされた場合は敗者の点数は自分の手札のカードの数字の合計ではなく、「敗者以外の点数の中で最も悪い点数の2倍」というルールもあります。ドボン返しによる敗者の点数は、最悪の点数の2倍ではなく6倍です。これも鬼ルールですね。

では点数の計算法は各自で自由に設定できるようにします。

各カードの点数を自由に設定できるようにする

ドボンの場合は「自分のカードの○倍」または「他のプレーヤーの最悪点の○倍」、ドボン返しの場合はさらに倍率を変えることができるように設定ダイアログを変更します。

下記のようなユーザーコントロールを作成して貼り付けています。「10」と書かれている部分をカードの番号に変更して点数を設定できるようにしています。

ユーザーコントロールCardPointはこのようになっています。

ConfigクラスとConfigObjectクラスの追加部分

ではConfigクラスとConfigObjectクラスの追加部分を示します。

ConfigDialogクラスの追加部分

点数計算

誰かがドボンしたときドボン返しはあるのか、ドボン返しは誰でもできる場合、最終的な勝者と敗者は誰なのかをOnDobonメソッドのなかで判定していました。ここからゲームの勝者と敗者が決まります。

点数計算が終わったら忘れずに値をクリアしておきます。

これで点数計算のときに

LastDobon == nullならドボンで上がったわけではない。
DobonPlayers.Count > 1のときはドボン返しがあった。

ということがわかります。

点数計算はCalcScoreメソッドでおこなわれます。