ゲーム開始

カードを配り終えたらゲーム開始です。

ドボンのルールと遊びかたによると、

親は積み札の1番上のカードを1枚めくって、積み札の横に表向きにして置いて台札にします。
親の左となりの人は、自分の手札の中から台札と同じ数字か、同じマークのカード1枚を台札の上に表向きにかさねます。
手札の中に出せるカードがない場合は、積み札の上から順番に出せるカードが出るまで手札に加えていきます。

とあります。

ここで必要な処理は

最初のカードを中央に置く
各プレイヤーが順番にカードを出していく

なのですが、ライバルがカードを出すときは

出せるカードはあるのか?
どのカードを出すのか?
出せない場合はカードを取り続ける

という処理をする必要があります。

カードを中央に表示させる

ShowCardCenterメソッドは名前のとおり、カードを真ん中のPanelに表示させます。

プロパティCenterCardはプレイヤーによって中央に出されたカードを表示させるとともに、そのカードがなにであるか情報を提供します。

最初のカードを出す

ゲームを開始するためには最初の台札を表示させる必要があります。この処理をおこなうのがPutFirstCardメソッドです。

最初の台札はシャッフルされたカードの先頭を使えばよいので、これをCenterCardにセットします。

ゲームが開始されてからの流れはこんな感じです。

順番にカードを出す

つぎに時計回りで順番にカードをだしていきます。

カードを出す処理、出せなかったときの処理はPlayerクラスのメソッドでおこなうことにします。

カードは台札と同じスートか番号でなければなりません。そこで台札を引数にする必要があります。あとカードが出せない場合はカードを積み札からとり続けることになるので、これも引数として渡すことになります。

出せるカードが複数あるときは乱数で適当に決めます。

これは積み札がなくなったときに出されているカードをシャッフルして再利用するためのメソッドです。

ではライバルたちのターンのときの処理を考えてみることにします。(自分は「親」という設定なのでカードを引くのは最後)

これは順番がまわってきたときに出せるカードがあるかどうか調べて、ない場合は出せるカードがみつかるまでカードを引き続けるメソッドです。

ライバルがカードを出し終わったら自分のカードをだします。七並べのときと同様、カードをクリックします。

GetClickedCardはクリックされた場所にあるカードが何かを取得するメソッドです。

これでカードゲームらしくなりました。次回に続きます。

ドボンできるようにする C#でドボンをつくる