Entries

同人ソフト作るよ!の4;分割したり分岐したり

さて、前回はテキストを表示するところをやった。
今回はテキストの2、「テキスト分割」と「分岐」をやっていこう。


テキスト打ちがある程度進むと、多分テキストで0.txtが膨れ上がっていくことだろう。

えー、ちなみに私は00.txtとして使っているので、そちらに表記を統一するとしよう。システム的にもそちらを推奨してるし。
テキスト量が多いときには、以下のこともあって、二桁表示可能な形にする方が都合がよいので。

そこで、「テキスト分割」を、場面転換などで適宜行っていくようにしたい。

具体的には、最初のテキストは00.txtだが、それに続けて01.txt、02.txt……と、テキストを増やしていくことができるのだ。
連続した数字のファイルを順番に読んでいくので、00.txtに書いてある最初のスクリプトの定義設定を、改めて書く必要はない。
00.txtの続きを、どんどん続きナンバーのテキストファイルに書いていけばいいのだ。

ただし。
一番最後のナンバーのファイルには、必ず "end" タグがはいってないといけない。
他のファイルには逆に入れない。
入れると、「そこで終り」になるから。
ゲームの終りに入れて、「ここで終りッスよ」というマーカーなのだ。

例えば、00〜08.txtまであったら、08.txtの最後に「だけ」"end"を入れる。
ただし、途中でendが入ってると、スキップしない限りはそこで強制終了になってしまう。
例えば途中の06.txtの最後にendを入れたままだと、07.txt、08.txtの内容は全く表示されないままムダになる。

例外として、下で書くが、「分岐」で「これを選択したらゲーム終了」となるように「あえてしてある」のなら問題はない。
デバッグ用にすぐ終わらせたいときには、「endタグへ飛ばす」よう分岐コマンドで書けばいい。
もちろん、普通に右上の×を押せばいいって話もあるが。


さて、テキスト分割はこれでおkだろう。

次は、ただ一本道として流れていくテキストに変化を出すために、「分岐」を作る。
分岐を作ることで、アドベンチャーゲームらしくなってくるではないか。

さて、分岐を作るためのコマンドは「csel」。「Command SELect」の略ね。
テキストウインドウに選択肢が出て、選んだ先の「タグ」へと分岐が飛んでいく。

ADVサンプルのラストにこんなのが入っていたと思うが、これが分岐コマンドの書き方である。

-----------------

csel "分岐1",*tag1,"分岐2",*tag2,"分岐3",*tag3

-----------------


ウインドウには、↓のような感じで表示されるので、それをクリックして選んでもらう。

-----------------

分岐1
分岐2
分岐3

-----------------

で、クリックされると、それぞれ上から*tag1、*tag2、*tag3と書かれた「タグ」へとジャンプする。

ただ、これはあくまで「選択肢だけの分岐」であって、飛んだあとにまた別の処理を考えなくてはならない。
飛んだ先で、選択肢に応じたフラグ立て(潰し)、パラメータの変化、それぞれの場合に出すテキストを変えたり、表示する絵を変えたり……といった、ことを記述して実行するのである。

これはどういう構造かといえば……

例えばこういう表記をしていると、上のコマンドセレクトから*tag1、*tag2、*tag3へ飛んだあと、


-----------------

*tag1

(イベント1処理をいろいろここへ書く、以下同様)

goto EV4    ;「*EV4へジャンプ」というコマンド(*tag2、*tag3をすっとばす)
           ↓
*tag2        ↓
           ↓
(イベント2)    ↓
           ↓
goto EV4    ;「*EV4へジャンプ」(*tag3をすっとばす)
           ↓
*tag3        ↓
           ↓
(イベント3)    ↓
           ↓
         ; こ↓こは別にジャンプしなくてもすぐ↓なので書かない
           ↓
*EV4     ←←+ ;で、ここへ到着
(イベント4)

end       ;終了ー


-----------------

スクリプトっていうのは基本的に、「上から順番に処理していく」のである。
だからこういう「処理をとばす」コマンドがないと、処理の重複があっても省略できないし、選択肢が基本的に作れないのである。
それではスクリプト言語としては欠陥品だ。

↑の例だと、「goto EV4」てのがないと、

イベント1→イベント2→イベント3(→共通イベント4→終了)

と順番に処理していく。
「どんな場合」でも。cselでどんな選択をしても、同じイベントになってしまう。

それぞれのイベントが独立して発生する場合、上から順番に処理していったのではおかしいことになる。
イベントを選択できる状態の場合、どこを選択しても上から順に起こる=「全て同じ」では、選択肢の意味がない。

なので、この分岐が役に立つ。

分岐で選択した番号が、それぞれイベント1・2・3に対応して、対応するイベントだけを起こし、次に移るようにしたい場合には、これを使うことになる。

goto ××」というコマンドは、「タグ *××へ行け」というコマンドで、処理を指定の場所まで飛ばすコマンドである(飛び先のタグは必ず頭に半角「*」をつけること)。
これで全て、共通イベントタグ"*EV4"へ飛ばすように指定してある。

↑の場合では、イベント1・2・3が分岐選択イベントで、その選択に応じて、

分岐1: イベント1(→2・3飛ばす)→4→終了

となったり

分岐2: イベント2(→3飛ばす)→4→終了
分岐3: イベント3→4→終了


となったりするのである。

これは後に書く「条件分岐」とは別の、テキストのみの「分岐表示」の話で、パラメータを変化させたければ、これに変数(後述)の操作コマンドを加えて使う。



今日のまとめ。

分岐を作ってゲームらしくするよ!


これができなきゃ、アドベンチャーすら作れまへんでー。
分岐の方法は他にもあるけど、とりあえずこれは基本中の基本ってことで。
  スポンサーサイト
フレンズマップ - http://numberz.net/?3907
18歳以上限定のSNSサイト★激カワ娘とHな写メ交換♪
RE:はじめまして - http://466.jp/?adv=LP25283
出会いの検索エンジン★素敵な出会いを探してみませんか?
セフレリンク - http://adap.jp/?adv=LP25335
超人気!!セフレ探しの決定版★地元顔出し娘に直メール♪

0件のコメント

コメントの投稿

新規
投稿した内容は管理者にだけ閲覧出来ます

0件のトラックバック

トラックバックURL
http://yaounisemono.blog110.fc2.com/tb.php/41-d87936e4
この記事に対してトラックバックを送信する(FC2ブログユーザー)

Appendix

プロフィール

Author:夜鷹@偽者
貴様ッ、見ているなッ!

最近の記事

夜鷹来訪者

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

By FC2ブログ

今すぐブログを作ろう!

Powered By FC2ブログ