前回はプレイヤーの名前と残り枚数、その他の情報を表示させるためにユーザーコントロールを作成しました。

各プレイヤーのカードの残数を表示させる C#でババ抜きをつくる

カードを引いた結果、カードはそろったのか?

今回は「その他の情報」としてカードを引いた結果、カードはそろったのか? 確定した順位などを表示させることを考えています。

Playerクラスでは相手のカードを引くためのメソッドを作成しましたが、これを少し変更します。カードを引いた結果を返すようにつくりかえます。

CardPairクラスを変更

CardPairクラスはカードを捨てたときに空いてから引いたカードと元から持っていたカードの組み合わせを知るためのクラスです。Player.PullCardメソッドがnullを返さなかった場合はペアができたことになります。またどんなペアかもわかるようになります。

それから引いたカードをどの位置に追加するかも最後に追加するのではなくランダムな位置になるように変更しました。

RivalsTurn1メソッドを一部変更

ライバルたちがカードを引いたときに表示されている情報を更新します。

これはcardを文字列に変換するメソッドです。

あがったときの処理を変更

それからあがったときにメッセージボックスを出さずにプレイヤー情報として表示させることにしました。

自分がカードを引いたときも情報を表示させる

また自分がカードを引いたときも情報が表示されるようにする必要があります。

これで自分がカードを引いたときも情報が表示されるようになります。

カードを引く相手は誰なのかを表示する

フォーム上部にはカードが表示されているのですが、これが誰のカードなのでしょうか。これまではそれがわかりにくかったので、わかるように改良します。

自分が誰のカードを引くのかはゲームの進行によってかわります。これまでカードを引いていた相手があがってしまうと別のプレイヤーからカードを引くことになります。

フォーム上に誰のカードが表示されているのか表示するラベルを追加しました。

ここの内容が変更されるのは、ゲームが始まったとき、自分に順番が回ってきたときです。

そこでゲーム開始のときとライバルたちのターンが終わったときに、ここに適切な文字列を表示させます。

ゲーム開始時と自分に順番がまわってきたときにはShowRivalCardsメソッドが実行されるので、ここで処理をおこないます。