HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0501
こーぐまんテキストの一斉読み込みと変数格納2解決


こーぐまん

リンク

2021/5/1(Sat) 18:04:03|NO.92733

HSPに触ったばかりの素人で恐縮です

テキストベースのシンプルなゲームで
ゲームのキャラクター等を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の書き換えでゲーム環境をいじれるような仕組みを作れたらなと考えているのですが…



この記事に返信する


wl

リンク

2021/5/1(Sat) 19:17:08|NO.92734

""で囲まれた部分は文字列です。
こーぐまんさんのスクリプトでは、noteloadは"nametxt(cnt)"という名前のファイルを探します。
文字列と変数を繋げるには、"testtxt\\" + nametxt(cnt) と書きます。
これで、読み込まれるはずです。

あと多分、続くnotegetに第二パラメータが必要です。

設定の仕組みに関しては、無知なので何とも分かりません。よさそうですけどね〜



こーぐまん

リンク

2021/5/1(Sat) 20:42:05|NO.92735

ありがとうございます。
ご協力頂けたお陰でひとまず形になりました。

ご指摘頂いたとおりに
	noteload "testtxt\\" + nametxt(cnt)

でに直しまして、それでも同様のエラーが出たのですがもしやと思い
	repeat stat - 1	
とした所、イメージ通りに動作してくれました。

ファイルの総数は自然数でstatに入るので
0から数え始めるrepeatに使うには1多かったという事ですかね

兎にも角にもありがとうございました。
ゲームの方は引き続き、手探りで考えていきたいと思います。



ONION software Copyright 1997-2021(c) All rights reserved.