ジョーカーに関するローカルルール

これまではジョーカーは使いませんでした。ジョーカーを使う場合、これもローカルルールがいくつかあります。

出せるカードがない場合、ジョーカーを代用する
(ジョーカーはすべてのカードの代わりになる)

ジョーカーは単独では使用できない
場に出ているカードから1つ違ったカードを持っている場合であれば、ジョーカーと併せて1つ違った数字のカードとの2枚を一緒に出さないといけません。この場合、ジョーカーはいつでも使えるカードではなくなります。

またジョーカーが出された場合、その位置に本来置かれるべきカードを持っているプレイヤーは、そのカードを場に出し、代わりにジョーカーを手札に加えなければならないというルールもあります。

そのときジョーカーは強制的に取らされるというルールと、辞退することができるルールがあります。

ローカルルールがたくさんあるとややこしいです。

今回作成するプログラムのルール

ここではいきなり難しくすると大変(あと間を持たせることができない)なのでジョーカーは単体で出す、ジョーカーのうけとりは「拒否できない」というルールにします。あとでジョーカーは次に出せるカードとセットで出さなければならない、ジョーカーをもらうかどうかは任意というルールでもつくってみることにします。

ジョーカーを表示させる

カードの種類は以下のように定義されています。

まずはカードを配るときにジョーカーをいれる必要があります。それからカードを生成するときにジョーカーもつくる必要があります。

以下はカードを生成するためのクラスです。カードの絵柄を取得するメソッドを少し変更しています。

これでジョーカーをつくることができます。またスペードのAは他のカードと違う絵柄もあったので、これを使うことにします。

これはジョーカーを使うためのメソッドです。引数はどのカードの代わりに使うかです。

カードを生成するときにジョーカーも生成します。他のマークには番号がありますが、ジョーカーには番号はありません。とりあえず1を設定しています。

ライバルの動作に関するメソッド

もし相手が出せるカードはないけどジョーカーを持っているのであれば、それを使います。

ジョーカーが使用する場合、どのカードの代わりに使うのかを考える必要があります。乱数で適当に決めています。

それからジョーカーしか持っていないのであれば、そのプレイヤーは負けです。

ジョーカーの表示と移動

またジョーカーは出されたらそのときのための処理をする必要があります。

ジョーカーはどのカードの代わりに出されたのかを調べてその位置に表示されます。

ジョーカーが使用された場合、ジョーカーのかわりに出されているカードを持っているプレイヤーはそれを出さなければなりません。OnUseJokerはカードの持ち主を探してカードをださせてジョーカーを受け取らせます。

次回は自分の動作に関するメソッドを考えます。

ジョーカー入りの七並べ プレイヤー側の動作 (その9)