ドボンしたプレイヤーが一番上においたカードがドボン返しの対象

ドボンにはドボン返しがあります。そして地域によってルールが違います。これまでのドボン返しはドボンされたプレーヤーにしかできないというルールでやってきました。またドボン返しはカードの合計に対しておこなわれてきました。

しかしローカルルールのなかには、ドボン返しはドボンしたプレイヤーが一番上においたカードを対象とするというものもあります。この場合、ドボン返しによってプレイヤーが一番上においたカードは別のものにかわるので、別のプレイヤーがドボン返しに返すこともできるようになります。このほうがルールとしては面白そうに思えます。

設定ダイアログの変更と追加

ではさっそくそのように変更できるようにしましょう。

まず設定のダイアログに新しい項目を追加します。クラスにも新しいフィールド変数とこれに対する処理を追加する必要があります。

DobonIfCanメソッドとOnDobonメソッドの変更

Config.IsAntiDobonTopCard == trueのときはドボンできるかどうかを判定するメソッドとドボン返しができるかどうかを判定するメソッドを書き換えればなんとかなりそうです。

以下はこれまでのドボン返しができるかどうかを判定するメソッドです。

以下はこれまでのドボン返しができるかどうかを判定するメソッドです。

ドボンをするときにどのカードを一番上にするのか考える必要があります。ユーザーがドボンするときはダイアログをつかって指定できるようにします。

一方、コンピュータがドボンするときは持っている数のなかで一番少ない番号を使おうと考えています。(数が小さいとドボン返しされにくい。ただしカードの和だけでなく差や商の場合、数が小さいからといってドボン返しされる確率が下がるとは言えない)

これはユーザーがドボンするときに一番上におくカードを番号を指定するためのダイアログです。

持っているカードのなかからラジオボタンを使って選択できるようにしています。また持っていないカードはRadioButton.Enabled = false; にして選択できないようにしています。

それではForm1.DobonIfCanメソッドを書き換えます。ここではドボンをするときに一番上に置くカードを選択させるようにしています。

これでドボン返しはドボンしたプレイヤーが一番上においたカードに対してできるようになりました。

実際にドボン返しがあるかどうかを判定するOnDobonメソッドに変更はありません。