ゲーム「ワガハイ式7ならべ」 制作手順2-1

監督スクリプトを記述しよう

このページでは、ゲームの監督スクリプトを記述していきます。制作手順1-1で書きましたように、ワガハイ式7ならべではゲームの進行については全て監督スクリプト任せになります。よって、監督スクリプトの主なお仕事を書き出すと以下のようになります。

・トランプ山札をシャッフルして、各プレイヤーにカード配布

・手札に7のカードがあった場合は開始前に場に出す

・自分のターンに場に出すカードを選択、出せない場合はパス

・CPUが(とあるルールにのっとり)場に出すカードを選択、出せない場合はパス

・各プレイヤー0枚になったらあがり、順位表示

細かいことを言うとまだまだあるんですが、主な所はこんな感じです。これらを順番に実装していきましょう!

スクリプトを書こう1(シャッフル&配布)

まずはゲーム開始前の挙動として、山札をシャッフルして、各プレイヤーにカード配布するスクリプトを書いていきます。

各カードの定義

その前に、まずは各カードの定義をしていきましょう。前回までで頑張って52枚のトランプオブジェクトを作成しましたが、これからスクリプトを書く都合上、各トランプオブジェクトとマーク・数字情報とが紐づいてる方が扱いやすいので、これらを関連付けてあげましょう。今回は、構造体を用いて、関連付けていきます。

構造体とは、関連情報を一固まりにしたものを指します。例えば、「人」という構造体の場合、「名前」「性別」「国籍」「身長」「体重」…といった情報を一固まりにして扱う仕組みです(Unityでは同様のものに「クラス」という仕組みがありますが、構造体の方が使用機能が限られていて、その分軽い、とのこと)。

今回は、下のような「TrumpCard」という構造体を作成します。

例えばクローバー6の構造体(名称:cardex)を作った場合は、以下のように値を定義します。

・cardex.mark=0(:クローバー)

・cardex.number=6(:数字そのまま)

・cardex.cardobject=「名称『card_c06』のオブジェクト」

・cardex.defaultpos=Vector3(6.5f,0.15f,0f)(場に出す位置、解説は後程)

なお中の変数は外から直接編集しますので、各変数の定義にpublicを付けておくのを忘れないようにしましょう。

次に、Startメソッド中に以下のスクリプトを書くことで、52枚のカードを定義していきます。要するに、先程クローバー6の構造体を上のように定義したのと同様に全52枚のカードを定義していきます。

場札のカード配列各カードが場に出た時の位置座標(card.defaultpos)については前回のページでも示したように、右図のような配置になりましたので、式に直すと上のようになります。先程例に挙げましたクローバー6の場合、i=6、j=0なので、確かにcard.defaultpos = (6.5f,0.15f,0f)になりますね!

各card構造体を定義した後、最後に山札をイメージした動的配列deckcardsに組み込んでいきます。これは、次に山札シャッフルをするための準備作業になっています。

山札のシャッフル

次に、山札シャッフルを行うスクリプトを書いていきます。先程、山札をイメージした動的配列deckcardsに52枚のカードが組み込まれましたが、現状ではマーク・数字順にキレイに並んだ山札になっています。この動的配列の要素順をランダムに入れ替えることで、順番をシャッフルしていきましょう。そのためのスクリプトが次のようになります。

本スクリプトにより、順番入れ替え作業が52回発生し、シャッフルした山札が完成する、という要領です。

最後に

今回、トランプ山札のシャッフルまでスクリプト化しました。次回は、各プレイヤーにカードを配布する手続きから書いていきます。次回で一気に、ゲーム開始までの準備過程を書き上げていきます。よろしくお願いします!!

シェアする

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

フォローする