ポン・ドボンとカン・ドボン

ポンまたはカンがされた場合もドボンされる場合があります。3が2枚だされたときは6でドボンすることになります。

ドボンできるのか?

ドボンかどうか判定するのはPlayerクラスのCanDobonメソッドです。長くなったので書き直しています。

設定とカードのフィールド変数を調べてドボンできるかどうかを判断しています。それから出されたカードがポンの場合は2倍、カンの場合は3倍になるのでそれに対応させています。

GetDobonedCardStringメソッドは、ドボンの対象になったカードを文字列で取得するメソッドです。ポンドボンやカンドボンであることがわかるような文字列をカード名といっしょに取得します。

GetDobonedTargetNumberメソッドは、ドボンの対象になる数字を取得します。カードが同時に2枚だされたときはカードの2倍の数、3枚の場合は3倍の数を返します。

GetStringPlayerCardsメソッドはそのプレイヤーのもつカードすべてを文字列にして返します。

CanDobonTwoCardメソッドは残りのカードが2枚だけのときに四則演算すべてをドボンの対象にしているときに、ドボンの判定をするメソッドです。

CanDobonMultiplicationメソッドはすべてのカードの積をドボンの対象にしているときに、ドボンの判定をするメソッドです。

CanDobonAverageメソッドはすべてのカードの番号の平均をドボンの対象にしているときに、ドボンの判定をするメソッドです。

CanDobonGeometricalAverageメソッドはすべてのカードの番号の相乗平均をドボンの対象にしているときに、ドボンの判定をするメソッドです。

じっさいにドボンする

ドボンの条件を満たしていればドボンするかどうかの選択をすることができます。

DobonIfCanメソッドはドボンされる可能性があるプレイヤーを引数にして、ドボンするかどうかを決めさせるメソッドです。コンピュータがドボンするかどうかは乱数で決めます。

ドボンが成立したとき、ポンドボンとカンドボンは点数計算の方法がかわってくるので、これらを区別できるようにしておく必要があります。

誰かがドボンをするとドボン返しがあるかどうかを判定するメソッドがありますが、そのなかで最後に実行されたカードを記憶しておく必要があります。

これは自分がドボンするときのメソッドです。

ドボン返しはあるのか?

CheckAntiDobonメソッドはドボン返しされるかもしれないカード、現段階でドボンしているプレイヤー、現段階でドボンされているプレイヤーを引数としてドボン返しはあるのか、じっさいにドボン返しされるのかを判定するメソッドです。

これは自分がドボン返しするときのメソッドです。

CheckAntiDobonメソッドが処理を終えたときに以下のフィールド変数を調べれば、最終的にドボンしたプレイヤーとされたプレイヤー、そのカードがわかります。

点数計算

最後に点数計算をしておわりです。

各フィールド変数のクリア

次のゲームを開始する前にカードのフィールド変数をクリアします。