開発日記⑳ 牌山がなくなったら流局にする

前回までの進捗

前回は、CPUが自動でツモ・打牌を行い、自分の手番まで対局を進められるようにした。
これでツモと打牌を繰り返せるようになったので、今回は牌山を最後まで使い切ったときの処理を追加する。

対局中と流局を区別する

これまでは牌山がなくなっても、「これ以上ツモれない」というだけで、局そのものが終了した状態にはなっていなかった。
そこで、局の状態として

playing (対局中)
exhaustive_draw (流局)

を持つようにした。
通常はplayingで進行し、牌山を使い切ったらexhaustive_drawへ切り替える。

最後の打牌で流局にする

牌山の最後の1枚をツモした時点では、まだその牌を捨てる操作が残っている。
そのため、牌山が0枚になった瞬間ではなく、最後のツモ牌を打牌したところで流局にする形にした。

最後の1枚をツモ
↓
最後の打牌
↓
流局

これで1局の終わりを明確に判定できるようになった。

流局したら対局を止める

流局後にさらにツモや打牌ができてしまうと、局が終了した意味がない。
そのため、すでに局が終了している場合は、それ以上ツモや打牌を行えないようにした。
CPUの自動進行についても、流局になった時点で処理を終了する。

画面でも局終了を分かるようにする

内部状態だけでなく、画面にも局の状態を表示するようにした。
対局中は「進行中」、牌山を使い切ると「流局」と表示する。
さらに現在の手番も「局終了」に切り替え、
「牌山がなくなったため、流局になりました。」
というメッセージを表示するようにした。
これで、最後まで牌を切ったときに対局が終わったことが分かりやすくなった。

今回できたこと

今回の進捗は以下のとおり。

  • 対局中と流局の状態を分けた
  • 最後の打牌で流局にするようにした
  • CPUの自動進行を流局時に停止した
  • 流局後のツモ・打牌をできないようにした
  • 画面に「流局」「局終了」を表示した
今回の進捗
流局判定

これで、配牌からツモ・打牌を繰り返し、牌山を使い切って流局するところまで1局を進められるようになった。
次回は、流局した時点の4人の手牌を調べて、誰がテンパイしているかを自動判定できるようにする。

目に見える進捗は心の支え。牛一。

コメント

タイトルとURLをコピーしました