- 1 名前:親父PG [04/03/30 02:40 ID:phIrC7nN.net]
-
C++やC、アセンブラは昔こなしたし、プログラムの事なら自信はあるけど ゲームは作った事が無い方。現場からも引退したし(w。 ここは一つ趣味でDirectXでも勉強して、ゲームでも作ってみようかなぁと思った、 オジサンPGのスレッドです。 一緒にマターリライブラリから作りませんか?
- 198 名前:親父PG [04/04/09 07:10 ID:Ihr7T82R.net]
- >>194-197
144氏さん 考察ありがとうございます。今回のケースはswitch文の構文が適していますね。 switch (fg){ case 0:{seen1;++fg;break;} case 1:{seen2;++fg;break;} case 2:{seen3;++fg;break;} default:{NonOp} } Cで書くとこうなります。これを置き換えます。 777 (MAPposition) X,Y EQ (価)a ,b start switch 4 778 (fg)A eq 0 CALL シーン1(fg A) 779 (fg)A eq 1 CALL シーン2(fg A) 780 (fg)A eq 2 CALL シーン3(fg A) 781 CALL シーン4(fgA) 782 return(0) シーン0 deviceWait() KEYUP:メッセージ出力1、++FG KETLEFT:メッセージ出力2、FG=0 return (next)
- 199 名前:親父PG [04/04/09 07:10 ID:Ihr7T82R.net]
- シーン側も以下のようにコンパイルされます
(Keydevice) a start switch 2 a EQ KEYUP goto localindex 1 a EQ KEYLEFT goto localindex 4 PUTMES 1(文字列INDEX) FGOP +1 return PUTMES 2(文字列INDEX) FGOP 0 return データ−のお尻に追加 文字列 array index of string max ... 0,24 "宝石が..." "宝石を拾った..." あとで説明文書きます
- 200 名前:親父PG [04/04/09 08:07 ID:Ihr7T82R.net]
- 続き
シーンデータについて考察してみました。シーンデータ−は以下の要求を満たす為に定義されます。 ○ゲーム内の処理命令を表す ○可変長をサポート ○ストリングが入る ○また、ここに1つだけ判断文を定義する事ができます。 定義できる判断文 DeviceWait系 ButtonPush系 設定なし FGに対する操作 他のトリガーの呼出 DeviceWait系、ButtonPush系 この2つは内部的にはトリガーテーブルを呼んでいるのと同じなのですが、シナリオの文法上煩雑になるので1文で定義できるようにします。 戻り値に対して処理のスタート部分を分岐できます。 ・スクリプト上の文法 deviceWait() KEYUP:メッセージ出力1、++FG KETLEFT:メッセージ出力2、FG=0 ・展開された形 (Keydevice) a start switch 2 a EQ KEYUP goto localindex 1 a EQ KEYLEFT goto localindex 4 ・実際の処理はこのあと1行ずつ定義されます PUTMES 1(文字列INDEX) FGOP +1 return これらの1行1行もあのトリガーテーブルと同じフォーマットで表すことができます。 文字列は別の場所に一括してまとめられて、内部ではインデックス扱い char*[a] に置き換わります。 シナリオを書く時の文法とコンパイル後の文法やデータ−の配置は異なります。 シナリオを各段階では「可変長」で表記できます。 >シリアルナンバを使用するのは、配列のアドレッシングのためでしょ? これは少し違います。地形MAPを切り替えた時に、同時座標のトリガーを判断するためにあります。
|

|