テキストベースのシンプルなゲームで
ゲームのキャラクター等をtxtファイルを通して
気軽に増やしたり減らしたり出来る機能を作れないかと考えています。
特定のフォルダに入っているtxtファイルを読み込んで
実行ファイル側で変数に格納する事で実現できないかと思いつきました。
例えばtesttxtというフォルダを参照し、
中の各txtにはキャラの名前やステータスに関する数値が行ごとに入っているとして…
chdir dirinfo(1) ;念の為、実行ファイルがあるフォルダを参照の基点にする
notesel chara ; dirlist chara, "testtxt\\*.txt" split chara, "\n", nametxt repeat stat ;システム変数statに見つけたファイルの総数(=キャラ数)が入ってる cnt1 = cnt ;こっちのリピート回数を変数に保存 notesel status ;txt内項目格納する仮想メモ noteload "testtxt\\nametxt(cnt)";ループのcntは入れ子でも個別に数えているはず? repeat notemax ;読み込んだ仮想メモの行数分リピート cnt2 = cnt ;入れ子側のリピート回数を別変数に保存 noteget nametxt(cnt1, cnt2) ;読み込んだtxt入ってるnametxtの次の次元に1行ずつ放り込む loop ;イメージ通りならnametxtの1次元にキャラのtxt、2次元に1行ずつキャラの紹介文? loop mes nametxt(1, 0) mes nametxt(0, 2) mes nametxt(3, 3) ;動作確認用の文章表示
というように作ってみましたが、F5したところ
#Error 12 in line 8 (???)
-->ファイルが見つからないか無効な名前です
とエラーが出ました
恐らく8行目の
noteload "testtxt\\nametxt(cnt)"
がおかしいのだとは思います デバッグ画面では変数nametxtに該当フォルダの 最初に読み込まれるテキストファイルの名前が収まっていたので ここまでは想像通りに動いてくれたのだと思います しかしnotesel statusには何も読み込まれておらず 恐らく(cnt)が良くなかったのでしょうか 8行目で、nametxtの現在のループ数と同順の要素を読み取るにはどうすれば良いでしょうか またこの処理では構想の実現自体が難しい場合、どのような文にするのが適切でしょうか 理想としてはelonaのbgm設定等のように txtの書き換えでゲーム環境をいじれるような仕組みを作れたらなと考えているのですが…