ゲーム「ワガハイ式テトリス」 制作手順4-2

監督スクリプトを記述しよう(ブロック消滅機能以外を実装)

このページでも、前回に引き続き、ゲームの監督スクリプトを記述していきます。前回も書きましたが、ワガハイ式テトリスにおける監督スクリプトの主なお仕事を書き出すと以下のようになります。

・ブロック落下が完了次第、10ブロック分スキマ無くしき詰めた列のブロックを消滅させる

・ブロックを消した際、右上の「○○列消した」の所の数字を更新

・10列ブロックを消すごとに、左上にあるレベルを1つ上げ、ミノの落下速度を上げる

・ブロック消滅後、残ったブロックに落下の指示

・ミノ出現位置にブロックが残っていたらゲームオーバー画面に移行

そして、前回は一番上のブロック落下が完了次第、10ブロック分スキマ無くしき詰めた列のブロックを消滅させるのスクリプト文が完成しましたね。本ページでは、それ以外の残り4つのお仕事をスクリプトに一気に書き上げていきます!!

ブロックの削除列数をカウントして右上に反映しよう

以前のぷよぷよでも似たようなことをしました(ぷよぷよ制作手順5-5参照)が、今回は消えた列数を右上に表示させます。やっぱりこういうゲームの進行度を現す物が無いと、面白くないですよね。しかも今回のテトリスでは、後程スクリプト化しますが、10列ごとに落下速度が上がりますので、消した列数って凄く重要な数字になります!

削除列数表示

文字テキスト(text UI)を更新するスクリプトはこの本にも載っています(4-6章参照)し、問題無いと思います。後は数字の算出方法ですが、ブロックが消えた時に消えた列数=前回定義した動的配列deleteyset(ブロックが消える列のy座標リスト)の要素数(Count)だけ増やしていけば良いですよね!ということで、こんな具合でしょうか。

10列ブロックを消したらレベルを1つ上げよう

最初がレベル1から始まった場合、10列消すとレベル2、20列消すとレベル3、…という具合にレベルが上がっていく仕組みをスクリプト化していきます。

レベル表示これは、色々なスクリプトの書き方があると思いますが、今回は変数nextgoalを設けて、この値と、先程定義しました変数deleteall(ここまでに消した全列数)と比べて、deleteallの方が大きくなった瞬間にレベル1アップ、という具合にスクリプトを書いていきましょう。簡単そうに見えて、意外と何行か必要なスクリプトになります(もっと簡単な書き方もあるのか…?)。

制作手順2-1でもお話しましたように、基本的にゲーム中のレベル情報は別途「chooselevel.cs」というスクリプト中の変数「levelchoice」で管理しており、そのスクリプト中のaddlevelchoice メソッドを用いると、ゲームのレベルが1つアップします。

ブロック消滅後、残ったブロックに落下の指示

ブロックの削除方法次はこちらをスクリプト化していきます。前回も出しました右図の例で説明しますと、i=0とi=2の列が消滅後、i=1の列は1列下に、i=3とi=4の列は2列下に、それぞれ落下すれば良いですよね。その辺をどのようにスクリプト化するかですが…。

今回は、各ブロックごとの変数fally[i]を用意します。この変数はi番ブロックが落下後どれだけ落下するかを表す変数となっており、この変数の値を決めるスクリプトは以下のように書きます。

そして、後は落下の指示ですね。更に、ブロック削除後のタイミングで以下のようなスクリプトを追加します。

こちらのページでも解説しておりますが、動的配列.Contains(○○)は、値○○が含まれているか(→true)否か(→false)を返してくれる検索機能になります。要するにdeleteyset のリストに含まれるy座標のブロックは既に削除されておりますので、本if文を入れておかないと、既に消滅済のブロックまでムリヤリ呼び出すことになり、NullReferenceException のエラーが発生してしまいます!!

積み上げ過ぎたらゲームオーバー

最後はこちらの機能ですが、これはぷよぷよでも実装した機能(ぷよぷよ制作手順5-5中間部参考)ですので、こちらでは結果のスクリプト文だけ書いておきます。ちなみに、今回のテトリスでのゲームオーバー位置=(-0.5f,11.5f)になります。

最後に

今回で、監督スクリプトの主なお仕事5つについては無事スクリプトに書き下すことが出来ました。実際のワガハイ式テトリスではもっと他にも沢山の細かなお仕事をこなしていますが、監督スクリプトの重要な部分はこれで以上になります。さらに詳しい話を知りたい方は私ワガハイの方までお問い合わせ下さい。ありがとうございました!!

シェアする

  • このエントリーをはてなブックマークに追加

フォローする