親父PGがゲームを作り始めるスレッドat GAMEDEV
親父PGがゲームを作り始めるスレッド - 暇つぶし2ch197:144
04/04/09 04:56 d03K47Nx.net
トランスレータを書く前提で、スクリプトで上記を書き直してみよう。
 青い宝石のある位置に、イベント名 BlueJewl の文字列が定義されている(もちろん識別番号でも良い)としよう。
 [シーンファイル]
  <event BlueJewel>
   [CounterCheck BlueJewelCounter]
    0 「台座に青い宝石が置かれている」
    1 「青い宝石からは高い音が発せられている」
    2 「青い宝石を手に入れた。どこかで音がした」
      *get BlueJewel
 ただし、[ ] 内の CounterCheck は、スイッチのようなものだが、カウンタを参照して、一致したらイベントを起動して、
 カウンターをカウントアップする。Cの switch でいう default は別に考える。
 * は、システムコマンドを呼び出す。
 もちろん、シーンファイルは事前に仮想マシン用のバイトコードにコンバートしておいて構わない。
例に最適化した文法を作ったわけで、かなりズルしてるけど、トランスレータを前提にすれば、こういうズルも必要なときにできる。
親父PGタン のトリガファイルの文法へのトランスレータも問題なく書ける。

しかし、これに多少の工夫をしても、まだ分かりにくいし、人為的ミスの混入も減らないかもしれない。
すると、結局シナリオ編集サポートツールを作ることになるわけで、ならば最初からスクリプトに任せてしまえ、ということですよ。
で、スクリプトをアセンブラライクなバイトコードに変換すると(逐次解釈でもいいけど)。
だから、スクリプトライクなトリガテーブルには疑問を抱くのですよ。

> std::map< std::string, TriggerAndProcess >を使用する場合、
> プログラム内で「このデータ-をMAP(STL)にPUSHしてくれ」という、コードを入れなければなりません。
> そういったレベルでスクリプトを組めるのはPGレベルの人だと思いますorz...
違う違う。
シリアルナンバを使用するのは、配列のアドレッシングのためでしょ?
文字列で連想配列をアドレッシングすることを勧めてるの。
編集時や使い回しの柔軟性のために。

ID みればわかるけど、>>194 も俺。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch