◆◆ LAST UPDATE 2004.04.20

■ 第十二夜 「ラベル」と「goto」命令について

[MXNovel INDEX] [戻る] [次へ]

■ 第十二夜 「ラベル」と「goto」命令について

エムノベファンの皆様、こんばんは。。MTL研究室の桜花です。

さて、今夜は「ラベル」と「goto」命令について、ご説明いたします^^;
今夜で、テキストアプリ「紙芝居 千尋 Ver 0.02」で使ったコマンドの説明が一通り終わります。
次夜からは、いよいよCGとサウンドを使ったサンプルを紹介したいと思います。

ふふふふ・・・
いよいよ、エムノベも本領発揮をするわけですね〜♪
ってことは、これからますますアドベンチャーゲームぽくなっていくわけです。
ザッツライト!!
今までは、いわば準備体操。。。これからが本番!! ますます楽しくなると思います♪ 
じゃ、今夜も張り切っていきますよ〜♪

◆ ラベルについて

ラベルはスクリプトファイルの任意の行に目印(ラベル)をつけるために使います。
プログラム開発経験者の方なら、既に察しがついているとは思いますが、そうでない方のためにも詳しく説明いたします。

スクリプト(プログラム全般)は通常、上の行(左上)から下の行(右下)に向かって走査していきます。
これは何も特別なことではなく、ワープロやメールなどの基本的なアプリケーションでも、この考え方が一般的です。
もちろん、小説を代表とする和文では、縦書きになっている場合もありますが、
コンピュータの世界では、英語圏の影響が絶大??なため、圧倒的に横書き(しかも左上から右下)が多いです。

何をいまさら・・・
そんなの当たり前じゃないか!!・・・って言われれば、まさにその通りです^^;
では、なぜ?こんな前フリをするのか?

もちろん・・・わけがあるんです♪
貴重な誌面?を割いているのは、非常に重要なことだからです^^;

プログラムはたいてい、上から下に流れるわけですが、時にはこのルールを無視して、途中から実行したいとか、
ある条件の時だけ元に戻りたいとか、こんなケースって現実にもままありますよね〜^^;(なんだか政治家ぽくない?)

ちなみに・・・こんなこと(ロジック)を日々、もんもんと考えては整理したり、実装したりする職業をしている方がたを・・・
人は「プログラマ。またはSE。」と呼ぶのであった♪ とかね^^;

って、いつもの悪い癖で脱線してしまいました。 話を元に戻します。

スクリプトファイルの39行目をみてください。

#start

・・・とありますが、これがまさに「ラベル」になります。

ラベルはスクリプトの行頭であれば、どこにでもつけることができます。
使い方としては、ある条件が成立したときに、この「#start」ラベルを参照しなさいって意味で使います。

サンプル(紙芝居 千尋 Ver 0.02)では、スクリプトのループとして使っています。
意味としては、スクリプトが文末(EOF)まで来たら、「#start」ラベルまで戻りなさい。。という意味です。

これがないと、文末まで進んだところで・・・

◆■END■◆と表示され、ESCキー入力待ちになります。

エムノベとしては、これはこれで正しい動作ですが、
アプリケーションとして考えると、ちょっと寂しいですから、ループの先頭行に巻き戻したいわけです。
(※ ビデオテープを想像するとわかりやすいと思います。)

システム的に考えれば・・・


    前処理

      ↓

   メイン処理

      ↓

    後処理


と流れるのが普通です。


話しが抽象的すぎてよくわからない?とご指摘されるのもなんですから、
おもっいきり具体的に「食事」を例に考えてみましょう!!


前処理  : 「いただきます。。」と掛け声。

#start

メイン処理: 味噌汁を飲む
       ご飯を食べる。
       おかずを食べる。
       ご飯を食べる。

goto #start    ; ここで、うむをいわさず、#startに行け!!ってことね♪

後処理  : 「ごちそうさま」と掛け声。

って具合になります。
ここでのメイン処理の終了条件は、当然、お腹がいっぱいになったらですね^^;
※ 考察
よ〜く考えたら、縦書きでもラベルがあってもいいかもしれません(汗)
ただし、長いラベル名は不向きなため避けるべきでしょう。

◆ ラベルの書式

行頭には必ず「#(シャープ?井桁?)」を半角で置きます。
その後に任意の文字列をつけてください。

例: startラベルの場合:

#start

◆ goto 命令

いつものように?コマンド表を↓にまとめましたので、早速、ご覧ください。

■ goto コマンド

項目 内容
分類 スクリプト制御コマンド
MXNovel エンジン Ver 0.01
機能 指定したラベル位置に移動します。
構文 goto ラベル名
パラメータ パラメータ1:  ラベル名


このコマンドは、ラベルとのコンボで使います。
このコマンドを使うことで、ループが実現できます。

[例]
goto #start


■ 編集後記

今夜は、ラベルとgoto 命令について解説いたしました。 
goto命令を使えば、スクリプトのループが実現できることがご理解いただけたかと思います。
さて次夜は、いよいよCGとサウンドを使ったサンプルを紹介いたします♪
では、次夜に逢いましょう♪ しーゆ。



[MXNovel INDEX] [戻る] [次へ]
◆◆ LAST UPDATE 2004.04.20