以前、自作のフォント表示スクリプトのことで質問させていただいた者です。
自作ゲームのデータ入力を簡潔にするために、#defineを使ってシンプルな書き方になるようにしたいのですが、
うまく関数内のデータを参照することができません。
"0"という数値を渡してやれば0番目のデータが、"1"という数値なら1番目のデータが表示される想定でコードを書いていたのですが、
何故か0番目のデータしか参照できなくて困っております・・・
ヘルプを見てもよくわからず、ネットの解説を見てもいまいちわからないので、
どなたか詳しい方がいらっしゃいましたらご教授くださいませ。
;データベース実装テスト
;------------------ #module "db_test" ;マクロ定義 #enum global db_title = 0 #enum global db_comment #enum o = -1;0からカウントさせるためのダミー定義 #define itemname(%1) #enum global %1 %c case %1 #undef title #define title(%1="未設定") if type=db_title : return %1 #define comment(%1="未設定") if type=db_comment : return %1 ;関数 #defcfunc database int type,int id switch id ;これらのデータは仮です itemname db_item_playstation2 title "プレイステーション2" comment {"人気の最新式DVDプレイヤー。 コレさえあれば 映画にアニメも 見ほうだい! ちなみに ゲームもできるというウワサが。"} itemname db_item_nintendowii title "Wii" comment {"人気の健康器具。 同梱のWiiリモコンは イザというときに 武器にもなるぞ。 ちなみに ゲームもできるらしい。"} itemname db_item_nintendods title "ニンテンドーDS" comment {"現在 ちまたで話題沸騰中の 最新式脳トレゲーム機。 さらに 別売のソフトを買えば 電子辞書や家計簿 さらにはTVチューナーなど ベンリなツールに 早変わり!"} default if type=db_title : return "エラー" if type=db_comment : return {"このメッセージが見れるのはおかしいよ。"} swend #global ;表示用処理 repeat redraw 0 color 63,63,127:boxf color 255,255,255 stick key if key&2 : sentaku-1 if key&8 : sentaku+1 pos 16,16 : mes sentaku pos 16,32 : mes database(db_title,sentaku) pos 16,52 : mes database(db_comment,sentaku) redraw 1 await 16 loop