Qは2枚以上同時に出せる

ドボンではQを2枚以上持っていたら同時にだすことができます。もちろん1枚だけでも出せます。この場合は上に置いたカードが台札となります。

では上に置くカードはどれになるのでしょうか?

たとえば「ダイアのQ」と「ハートのQ」をもっていたとします。台札は「ダイアの7」としましょう。この場合、2枚同時に出すのであれば、「ダイアのQ」を下、「ハートのQ」を上に重ねて場に出します。台札に置くことができるQを下にするというわけです。

Qを複数枚もっているときは「同時にだすことができる」のですが、これは強制ではありません。1枚ずつ出してもかまいません。

ではどのように考えればいいでしょうか。

PlayerクラスのPutCardメソッドを一部修正

PlayerクラスのPutCardメソッドのなかで、カードを出し、そのカードがQだった場合、ほかにQが持ち札にあるかどうか調べてそれも一緒に出すのか判定しています。

GetPutQueensメソッドはもっているQueenのなかでいっしょに出すカードのリストを返します。まず1枚目のQueenが出されたときにこのメソッドは呼ばれます。

PutCardメソッドですが、複数のQueenを出した場合、どれを上にするか考える必要があります。PutCardメソッドが長くなるので書き直しました。

OnFindCanPutCardメソッドは出せるカードが手札のなかにあるときのメソッドです。

OnFindCanPutNoCardは出せるカードが手札のなかにはないので、出せるカードを引くまで積み札からカードを取り続けるメソッドです。

OnAfterPutQueenメソッドはQueenを出すときにいっしょに他のQueenも出すメソッドです。戻り値は一番上に置かれるカードです。

自分の手番のときQueenが複数あったら・・・

自分の手番の場合、Queenが複数あった場合、どうするのか選択できるようにしないといけません。これに対応できるようにダイアログを出すことにします。

OnMyPutCardQueenメソッドはQを出したとき、他にもQがある場合はいっしょに出せることを示すダイアログボックスを表示します。

そして同時にだすQueenと一番上に置くカードをユーザーに選択させます。選択が終わったらカードを出します。

これはQueenを同時に複数出すかどうか選択するためのダイアログです。