ドボンのローカルルールのなかにはこのようなものもあります。

加減乗除した値でもドボンできる

手持ちのカードが2枚の時のみ、その2枚のカードの数値を加減乗除した値であがることができる。たとえば、「2」と「6」があったときには、2+6で「8」、6-2で「4」、6×2で「12」、6÷2で「3」と、4種類の数字に対してあがることができる。これは、ドボン返しする側も同様である。

ネタ元は ドボン – Wikipedia

ではそのように作りかえましょう。

まず設定に関するクラスを変更します。

そして設定のダイアログに関するクラスも変更します。

Player.CanDobonメソッドの変更

ドボンできるかどうかをチェックするメソッドがあったので、これに変更を加えればよいですね。

ドボンできるかどうかをチェックするメソッドはPlayerクラスのCanDobonメソッドです。

これを以下のように変更します。

カードが2枚だけに限定されているので、どちらが大きいかを調べます(引き算と割り算で問題になる)。割り算の場合、割り切れるかどうかも調べる必要があります。

なぜドボンが成立するのか

それからなぜドボンが成立するのか説明がほしいところです。ドボンしたプレイヤーが持っているカードとドボンできた理由も一緒に取得できるように変更します。

DobonIfCanメソッドの変更

引数を変更したので呼び出し元も変更する必要があります。といっても1箇所だけですが・・・。

DobonIfCanメソッドは引数であるプレイヤーに対してドボンできるかどうか、できる場合はドボンするかどうかも含めて判定するメソッドでした。

以前のDobonIfCanメソッドは

としてドボンできるプレーヤーを最初に集めて処理をしていたのですが、ドボンできるプレーヤーが複数いる場合、ドボンできる理由が違ってくるので処理内容を変更しています。プレーヤー全員に対してドボンできるかどうか確認するようにしています。ただし自分が出したカードにはドボンできません。

相加相乗平均でもあがれる?

3枚以上の場合:以下のパターンが考えられる(集団や地域により、認められないパターンもある)。なお、これらのパターンは、手持ちの札が2枚の場合のあがりでも適用される。

それから3枚以上の場合でもかけ算でドボンできるルールもあるそうです。ドボン – Wikipediaによると

持ち札を全て掛け合わせた合計 (例)A、A、2、3 → 1×1×2×3=「6」であがり。
持ち札の相加平均 (例)6、9、Q、K → (6+9+12+13)/4=「10」であがり。
持ち札の相乗平均 (例)2、9、12 → 2×9×12=216であり、この3乗根は6であるため、「6」であがり。

このようなものも認めるルールがあるとのことです。相乗平均って(絶句)、ゲームの最中に持っているカードを全部掛け合わせた数を計算して、そのN乗根を計算するなんて・・・相当な計算力が必要ですね。

これは設定のダイアログに関するクラスです。新しくフィールド変数とロード時と[OK]がクリックされたときの処理を追加します。

あとはCanDobonメソッドに加筆修正を加えてできあがりです。