2016年2月20日土曜日

ウディタでADV(ノベルゲー)作成講座5 選択肢(前編)

コモンイベント003に選択肢を表示、選択させるイベントを作っていきたいと思います。
選択肢は選択肢コマンドを使えば楽なんですけど、今回はピクチャで選択肢を表示する場合について考えていきたいと思います。



まずコモンイベント003に「選択肢」という名前のイベントを作ります。
「入力の数/結果を返す」というところの「設定」ボタンを押してください。



数値1/コモンセルフ0にチェックを入れ、「選択肢の数」と入力します。
文字列1/コモンセルフ5にもチェックを入れ、「選択肢」と入力します。
下の方にある「結果を返す」にチェックを入れ、名前は「選んだ結果」として、返す値にはセルフ変数10を選択します。

OKを押したら、続いて「セルフ変数使用状況」というボタンを押して、使用するセルフ変数に名前をつけていきましょう。



コモンセルフ00と05にはもうすでに名前がついていると思いますので、それ以外の変数に名前をつけていきます。
06に「一行切り出し用」
07に「一行切り出され用」
10に「選んだ結果」
11に「選択している位置」
12に「キー入力受付」
13に「ピクチャ番号」
14に「横の長さ」
15に「y座標」
16に「一時変数」
と、入力します。

今回はたくさん変数を使うので、今までよりもちょっぴり複雑になります。
順を追ってコマンドを入力していきましょう。

①基準となるピクチャ番号を決める
これから作っていくシナリオの中で、選択肢は二択か三択か、それとももっと多い数なのか、決まっていません。
二択の場合でも三択の場合でも四択の場合でも対応できるように、汎用性の高いコモンを作っていく必要があります。
そのため、選択肢を表示させるピクチャ番号は一定ではありませんので、変数を使用します。




まず、「変数操作」で「このコモンセルフ13:ピクチャ番号」に「100」を代入しました。

②メッセージウィンドウの横の長さを決める
選択肢の文が長くなるか短くなるかは、その時々によって異なるでしょう。
「はい」「いいえ」のような短い選択肢に対してメッセージウィンドウの幅が広すぎるとなんだか嫌だなあと思ったので、選択肢の文の長さに応じてメッセージウィンドウの大きさが変わるように調整していきます。

選択肢のメッセージウィンドウ幅が広すぎる例↓




こんな感じに調整したい↓


横の長さを決めるために、まず、見えない所に選択肢全体をピクチャ表示させます。



ピクチャ番号は背景のピクチャ番号(今は1番に設定していますね)未満なら何でもいいのですが、何となく-100にしてみました。
表示タイプで「[3]文字列をピクチャとして描画」を選択肢、文字列のところは「¥cself[5]」と入力して、セルフ番号5番の内容が表示されるように設定します。

次に、「変数操作+」のコマンドを使って、今表示したピクチャの横の長さを取得します。


「変数操作+」で「このコモンセルフ14:横の長さ」を指定します。
「ピクチャ番号」の横のチェックボックスにチェックを入れ、「-100」を入力し、「画面サイズ(横)」を選択します。



次に、「変数操作」で、同じく「このコモンセルフ14:横の長さ」を選択し、+30されるように設定してください。

これで、選択肢のメッセージウィンドウの横の長さが決まりました。


③選択肢を表示するy座標を決定する

選択肢のx座標は画面真ん中に固定するので良いとして、y座標は選択肢の数によって変わってきます。
そのため、まず基準となるy座標を計算しなくてはいけません。

例えば、選択肢が二択なら画面を縦に三分割するように配置します。↓


選択肢が三択なら画面を縦に四分割するように配置します。↓


したがって、計算式は「画面の縦の長さ÷(選択肢の数+1)」になります。
では、計算していきましょう。



まず「コモンセルフ16:一時変数」に「選択肢の数+1」を代入します。



次に「コモンセルフ15:y座標」に「480÷コモンセルフ16:一時変数」を代入します。
これで、y座標が決定されました。




「コモンセルフ16:一時変数」に、算出されたy座標の値を代入しておきます。



④選択肢を表示する

まず、下準備としてコモンセルフ7に選択肢の内容をいれておきます。



「文字列操作」で「コモンセルフ7:一行切り出され用」に「コモンセルフ5:選択肢」を代入しましょう。



選択肢の表示は選択肢の数だけ同じ動作を繰り返すことになるので、ループを使います。



「イベント制御」で「回数付きループ」にチェック。
回数には、「1600000」を入力します。
1600000は「コモンセルフ変数00番の内容を代入しますよ」ということです。
















ここから先の処理はループの中にいれていきます。

選択肢用のメッセージウィンドウを表示させます。













ピクチャ表示コマンドにて、ピクチャ番号は「1600013」と入力し、コモンセルフ変数13番の数値が代入されるようにします。
表示タイプは「[4]お手軽ウィンドウ」を選択し、ファイルに「<SQUARE>」と入力します。
表示位置は「中心」を選択しましょう。
生成サイズは横は「1600014」、縦は「30」に設定します。
座標はx座標が「320」、y座標は「1600015」です。
カラーはR10、G50、B30にしました。
※上の画像では不透明度が255になっていますが、不透明度を180に設定します。



次に「変数操作」で「コモンセルフ15:ピクチャ番号」に+1します。



「文字列操作」で「コモンセルフ6」に「コモンセルフ7」から一行切り出します。

続いて、ピクチャ表示で、選択肢を表示します。



ピクチャ番号は先ほどと変わらず「1600013」です。
表示タイプは「[3]文字列をピクチャとして描画」を選択してください。
文字列には「¥cself[6]」と入力し、コモンセルフ6番の一行切り出した内容が表示されるようにします。
位置「中心」x座標「320」y座標「1600015」は先ほどと一緒です。
カラーはRもGもBも、ともに100に直しておきましょう。

最後に変数操作を二つ行います。



「コモンセルフ変数15:y座標」に「コモンセルフ16:一時変数」を加算します。



再び、セルフ番号13の内容を+1しておきます。
これで、ループ内の処理は終わりです。

長くなったのでいったん区切ります。


0 件のコメント:

コメントを投稿