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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0620
MSX68000データの効率よいSAVE・LOAD方法3解決


MSX68000

リンク

2020/6/20(Sat) 19:31:09|NO.90820

 中規模ゲームを何作か作ってきたので、次はRPGを作る事に挑戦しています。でご多聞に漏れずアイテム・呪文・モンスターなど、データ(配列変数)の量が多くて大変です。現在は以前教えてもらった

A.配列変数の連続代入「配列変数(0)=値,値,値,値…」

 を使っているのですが、これでも記述が冗長なので、他に命令が無いか調べた所

B.ゲーム起動時にBSAVE/BLOAD命令で、ゲームプログラム本体とは別に作っていた配列を読み込む

 がありました。しかしこれはデータを編集または生成する別プログラムを作らねばならず面倒で、私としては

C.職業プログラマー時代にCOBOLやVisualBASICで使えた機能で、ファイルを読み込んだら一件(一行)毎にテキストデータを読み、「カンマ(,)で区切られた」または「スペースで位置を揃えた固定長データ」を分割して配列に入れていく

 を使いたいのですが(これだとメモ帳があればデータの修正が簡単に出来る)、書籍などを調べた所、Cに該当する命令が見つかりません。

 どうしたらいいでしょう?



この記事に返信する


ine

リンク

2020/6/20(Sat) 20:08:45|NO.90821

hspda.asのcsvstrがお求めの機能かな、と思います。



あらや

リンク

2020/6/20(Sat) 20:35:05|NO.90822

ineさんの仰る通り、CSV系の命令を使えば出来そうですが、

そもそも機能が無いのならば作れば良いので
ちょっと標準命令だけでやってみました。


/* 読み込みに使うファイルの中身(rndで適当に作った100個の数値です) 49,92,184,249,104,249,87,252,5,110 84,50,23,94,83,4,112,34,220,43 251,201,81,205,79,93,36,232,131,104 70,244,68,183,227,196,38,94,76,174 56,253,53,235,219,65,32,64,212,173 25,222,159,154,164,136,6,124,244,243 243,104,93,114,131,211,12,211,91,157 246,131,63,78,14,249,225,159,187,82 246,60,137,57,143,200,31,10,167,33 113,55,248,230,54,234,20,55,157,236 */ bload "datafile.txt", txtdata; // ファイル読込 dim intdata, 100; //数値型配列変数を用意 idx1 = 0; // 配列用インデックス notesel txtdata; repeat notemax // ファイルの行数分繰り返し datalen = ""; // 1行ずつ取り出すための変数を初期化 idx2 = 0; // 読み込み時に使うインデックス用変数の初期化 noteget datalen, cnt; // 1行ずつ取り出し repeat // 行末に行くまで無限ループ datasingle = ""; // 区切り記号までの文字を抜き出すための変数 getstr datasingle, datalen, idx2, ','; // インデックスの位置から区切り記号(,)までを抜き出す if( strsize == 0 ) : break; // 抜き出した文字が無ければ(行末まで行ったら)ループを抜ける idx2 += strsize; // 次に抜き出すインデックス位置の更新 intdata(idx1) = int(datasingle); // 抜き出した文字を数値型変数に変換し、配列に入れる idx1++; // 配列用インデックスを更新 loop loop // 必須では無いけれど、無駄なメモリが気になる場合は使った変数を初期化 sdim txtdata, 64; // 文字列の最小メモリが64なので、これ以下の数値にしても64バイトを使う sdim datalen, 64; sdim datasingle, 64; idx1 = 0; idx2 = 0;



MSX68000

リンク

2020/6/21(Sun) 03:37:59|NO.90826

 早速ありがとうございます。まだここまでの本格実装に至っていないのですが、ここまで来たら、教えてもらった事を参考に、作っていこうと思います。



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