前回はライバル側の動作に関するメソッドを考えました。

ジョーカーを追加する C#で七並べをつくる

今回はプレイヤー側について考えます。

自分のジョーカーを表示させる

カードが配り終えたとき、手元にジョーカーがあるなら表示させる必要があります。これまではカードを4種類にわけてソートしてから表示させていましたが、ジョーカーが手元にあるのであればこれも表示させないといけません。

パスのときの処理

出せるカードがない場合は自動的にMyPassメソッドが呼ばれていましたが、これを書き直します。

出せるカードがなくてもジョーカーなら出せる

勝手にゲームがはじまってしまう問題点を解決

カードが配り終わって1回目のターンで出せるカードがないけどジョーカーをもっている場合、「ジョーカーを使用します。出したいカードの位置をクリックしてください」というメッセージボックスが出るのですが、メッセージボックスが消えるとライバルが勝手にカードを置き始めます。

この問題は以下の方法で解決できます。OnRivalsTurnが呼ばれても自分のターンのときはなにもさせません。

ジョーカーを出すための処理

ジョーカーを使うときはカードを出したい位置をクリックすることにします。これまでユーザーがクリックするときは出したいカードを指定するときでした。今回はそれとは違うのでフィールド変数 isTakingOutJokerで処理を切り分けます。

MouseClickForTakeCardは普通にカードを出すときのメソッドです。ジョーカーをクリックするとメッセージボックスが表示されます。

MouseClickForTakeJolerメソッドはジョーカーを使用するときに呼ばれるメソッドです。どの部分がクリックされたかでどのカードを出すか判断しています。

自分が持っているカードのかわりにジョーカーは使えない

自分が持っているカードのかわりにジョーカーは使えません。出せないカードの位置やカードがおけない場所をクリックしたときにはOnMouseClickJoler_NoUseメソッドが呼ばれます。

不正な場所がクリックされたときの処理

不正な場所がクリックされたときは「ここにはジョーカーは使えません!」「ジョーカーを使うのはやめますか?」というメッセージボックスを表示して通常モードに戻すかジョーカーを使うかをユーザーに問うようにしています。