■ このスレッドは過去ログ倉庫に格納されています
親父PGがゲームを作り始めるスレッド
- 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を切り替えた時に、同時座標のトリガーを判断するためにあります。
総レス数 668
280 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200