[Go言語]Stateパターンで数当てゲームを作ろう!

こんにちは、KOUKIです。

この記事では、前回に引き続き、デザインパターンの一つであるStateパターンについて紹介します。

前回

デザインパターンまとめ

シチュエーション

復習ですが、State パターンは、 モノではなく「状態」をクラスとして表現するパターンです。
※Go言語ではクラスは存在しないので、構造体やインターフェース、変数などがそれらを表現します。

Switch-Based State Machine

今回は、switch文でStateの状態を切り替えるプログラムを作成します。

サンプルとして、任意のキーワードを打ち込み、それが一致したらクリアできる数当てゲームを作りましょう。

State

まずは、Progress / Failed / Clearの3つのState(状態)を実装しましょう。

数当てゲームでは、ゲーム進行中でProgress(進行)、数を間違えたらFailed(失敗)、数を当てたらClear(成功)の3つの状態に遷移します

Stateパターンを組む時は、プログラムの進行過程でどのような状態になり得るのか、具体的にイメージすることが大切だと思います。

数当てゲーム

数当てゲームを実装します。

ご覧の通り、ゲームの進行状況によって、Stateを変化させています。これが、本記事のポイントです。

switch文でStateの分岐を行なっており、状態の変化に伴い、任意の処理を実行できます。使いやすく、目から鱗な実装方法だと思います^^

使ってみよう

ここまで実装したコードを使ってみましょう。

実行してみましょう。

よりにもよって9で正解しました^^;でも楽しいですね!

まとめ

これまでに何度か数当てゲームを実装してきましたが、Stateパターンを使ったこのサンプルが一番シンプルに実装できたと思います。Stateパターンは、かなり便利かもしれません。

インスタンスの状態が変化するプログラムを実装する際には、Stateパターンを検討してみてはいかがでしょうか。

それでは、また!

Go言語まとめ

ソースコード

コメントを残す