ゲームの動きを変えてみよう
プロジェクトを変更して動きなどを変えてみたり、機能を追加してみたりしましょう。
設定の変更
マスの数を減らす
- 変更するスプライト:
- がクリックされたときに以下のように変更すると、
1辺のマスの数を8から4に減らすことができます。
マスの数を減らす
- 変更するスプライト:
- がクリックされたときの、
以下の部分の「1辺のマスの数を8から16に増やします」を変更します。
また、そのままだとはみ出してしまうので、以下のようにも変更します。
そうすることで、以下のようにマスの大きさを半分にした状態です。
ゲーム開始から終了までを自動的に再現する機能を追加する
- 対戦中に石を置いた順番を記憶しておきます。
対戦終了後にREPLAYボタンを押されたらREPLAYモードにし、 スペースボタンを押すたびに1つ前の対戦と同じ順番で石を置いていくことで開始から終了までを再現します。
まず新しいスプライトとしてREPLAYボタンとマス-リプレイを追加します。
- REPLAYボタン
新しいスプライトとしてREPLAYボタンを追加します。
上記の赤丸部分をクリックしてスプライトライブラリーを開き、Button2を選択します。
通常の対戦時とリプレイ時のコスチュームを作ります。
- マス-リプレイ
マスの複製を作り、そのスプライトの名前をマス-リプレイにします。
次に通常の対戦をおこなう処理の中に1手ずつの履歴を保存する機能を追加します。
- マス
すべてのスプライト用のリスト履歴-マスを作ります。
初期化に以下を追加します。
以下が変更後のスクリプトです。
- このスプライトがクリックされたときに
を追加します。
履歴にはどちらのターンであるかの情報も含むので必ず よりも前に追加します。
以下が変更後のスクリプトです。
- リプレイ開始を受け取ったときのスクリプトを追加します。
このスクリプトではリプレイ開始 を受け取ったら(リプレイモードになったら)、表示中のクローンをすべて削除しています。
REPLAYボタンにスクリプトを追加します。
- REPLAYボタン
がクリックされたとき(通常の対戦を開始するとき)には ボタンを表示する座標を設定し、通常の対戦時のコスチュームにします。
このスプライトがクリックされたとき (リプレイを開始するとき)にはリプレイ時のコスチュームにし、 リプレイ開始 を送ります(マスとマス-リプレイが受け取ります)。
マス-リプレイのスクリプトを変更します。
がクリックされたとき
-
- 説明
非表示にします。クローンではなくオリジナルであることがわかるように クローン?をnoにします。
初期化
-
- 説明
各変数、リストを初期化します。
- コードの詳細
ターンを1にします。
現在の手数を1にします。 コスチュームをなしにします。
マスリストの要素を一旦すべて削除します。
仮想の盤面のマスの数だけマスリストに0を追加します。
リプレイ開始を受け取ったとき
-
- 説明
並べられているマス(クローン)を一旦すべて削除し、通常の対戦と同じような形で配置します。
- コードの詳細
クローンであれば(クローン?=yesならば)削除します。
初期化を実行して各変数、リストを初期の状態にします。( 初期化の内容はマスの場合と少し異なります)
表示されていたクローンが一旦すべて削除されてから新しくマスを並べたいので念のため1秒待ちます。
マスを並べるを実行して各マスを配置します。
石を中央に置くを実行して盤面の中央に黒を2つ、白を2つ石を置きます。
石更新を送ります。
スペースキーが押されたとき
-
- 説明
履歴-マスリストから順番に履歴を抽出し、該当するマスに石を並べていきます。
スペースキーが押されたときの イベントはオリジナルとすべてのクローンが受け取るので、 履歴から取得したマス番号に該当するクローンのみが以降の処理を実行するようにします。 スペースキーが1回押された時に石を置く処理を実行するマスは常に1つだけです。
実際に石を置いて挟んだ石を裏返す処理などは通常の対戦時と同じ処理をします。
- コードの詳細
履歴-マスリストから 現在の手数に該当する履歴情報を取り出します。
履歴にはその手数の時に石を置いたマスの番号が入っています。 黒の番であればそのままプラスの値、白の番であればマスの番号に-1をかけたマイナスの値が入っています。
つまり履歴から取り出した値の絶対値が石を置いたマスの番号となります。
履歴から取り出したマス番号と同じ番号が割り当てられているマス(クローン)のみ、 それ以降の処理を実行して石を置きます。
処理を実行するマスは1つだけであり、それ以外のマスは何もせずにスクリプトを終了します。
履歴から取り出した値がマイナスの場合はターンを-1(白)にし、 プラスの場合はターンを1(黒)にします。
それ以降は通常の対戦時と同じようにして石を置き、挟んだ石を裏返します。
最後に現在の手数を1増やすブロックを追加します。
- 削除するスクリプト
- 盤面の設定
- このスプライトがクリックされたとき
- 変更しないスクリプト
- マスを並べる
- 石を中央に置く
- クローンされたとき
- 石更新を受け取ったとき
- 石を置ける?
- この方向で裏返せる?
- 各方向を裏返す
- 1方向を裏返す
- 黒白(仮)→確定
以上で変更は完了です。次のような動きとなります。
通常の対戦後にREPLAYボタンを押すとREPLAYを開始します。