自分の番になったらカードを出す処理が必要です。カードを出すための動作として画面下に並んでいるカードをクリックすることにします。

クリックされたことでどのカードがクリックされたのかわかるようにする必要があります。

自作メソッドのShowMyCardsのなかで自分のカードを表示するまえに種類順と番号順でソートしていますが、このときにplayersCards[0]の中身もソートできるようにします。

それからカードの大きさは静的メンバーにしました。

GetMyCardRectangleは自分のカードが表示されている矩形を返すメソッドです。カードの持ち数を調べて順番に調べていけばクリックされた場所がカードが表示されている矩形の内部かどうかがわかります。

実際にクリックしてみると正しく表示されていることがわかります。マウスポインタがキャプチャされていないので画像ではわかりませんが・・・

クリックされているカードがわかったら、本当にそのカードは出せるカードなのか調べます。テーブルのうえに出されているカードのそれぞれの種類について最大値と最小値を調べます。最大値の次の値が13以下、最小値の一つ前の値が1以上のとき、それは出すことができるカードです。

そこで出せるカードを調べて取得するメソッドをつくります。これが返す結果と比較すれば出せるカードなのかわかります。

GetCanTakeoutメソッドは出せるカードを取得するメソッドです。

CanTakeoutは指定したカードがGetCanTakeoutメソッドで取得したカードのなかに含まれるかどうか調べるメソッドです。

フォームのうえでクリックされたら自分のカードがクリックされたのか、そのカードはなにか、そのカードは出せるカードなのか調べて出せるカードであればテーブルのうえに出して自分の手元のカードから取り除きます。