鳩でもわかるThe Simple Gameをつくる(1)の続きです。今回はゲーム開始以降の処理を実装します。

コンピュータの着手

ゲーム開始の処理の前提としてコンピュータが次の手を着手する処理を示します。

勝つための手が存在する場合はこれを選択し、ない場合は適当に次の手を選びます。以下のコードは鳩でもわかるThe Simple Gameをつくる(1)で示したC#のコードとほぼ同じですが、コンピュータが後手の場合もあるので引数で切り分けています。コンピュータが自力勝利できる場合はそのための手も取得しています(現在位置から移動可能なコンピュータ必勝点がわかればよい)。

取得された手を着手する処理を示します。

勝敗の判定

所定のターン数を双方が着手し終わったら勝敗判定します。最終的に選択されているマスに書かれている文字がプレイヤー勝利の文字であればプレイヤーの勝ち、そうでなければ負けです。

勝ちの場合は残り時間と勝利数からどれだけ加点するか計算して加点処理をおこないます。そのあとターン数を 1 増やして次のステージに進みます。負けの場合はゲームオーバー処理をおこないます。

ゲーム開始の処理

ゲームを開始するための処理を示します。

最初は1ターンだけで決着する簡単な問題を出題します。ゲームスタートのボタンを非表示にして先手後手選択用のボタンを表示します。またスコア等の変数をリセットします。

先手後手選択用のボタンが押下されたときの処理を示します。

先手が選択されたときは先手であることを示すis_player_firstフラグを true にして着手不能であることを示すignore_clickフラグを false にします。後手が選択されたときはis_player_firstフラグを false にしてコンピュータの着手が終わるのを待ってからignore_clickフラグを false にします。

移動の処理

プレイヤーが駒を移動させる処理を示します。

引数は移動先のマスのindexです。移動先が移動可能なマスかどうかチェックして移動可能なら移動処理をおこないます。

キー操作でも駒を移動させることができるようにします。

ゲームオーバー処理

ゲームオーバー時の処理を示します。このときスコアランキングに登録するデータの送信もおこないます。

サーバー側の処理とスコアランキングを表示させる処理はゲーム開始以降の処理 鳩でもわかるXORパズルをつくる(2)と同じなので省略します。