こんにちは、元です。
前回私が書いたのは外部データの読み書きについて、
「使った方が良い!」ということを前面に押し出して話をしました。
今回はもう少し具体的に話をしようかと思います。
[0回]
外部データはほとんどの場合、ただのテキストファイルです。
なので読み込んだ時点ではchar型配列としてしか扱えません。
私の場合、一つのオブジェクトの情報を、一行に繋げて全て書き込みます。
オブジェクトの種類,初期位置,回転情報,拡大率,・・・・・・
のようになります。
csvファイルを使う方は大体同じような形式になると思います。
使うオブジェクトによっては使う画像や音のファイル名なども繋げて書きます。
そこで、char型二次元配列や、std::string型配列(C++)にデータを読み込むのですが、
内部データになった後に配列の0番目のデータが何か、
というのはいちいちテキストファイルを見て確認しなければいけません。
読み込む情報量を間に増やしたい場合などに、要素番号を書き換える必要があります。
一つのソース内だけで完結していればまだいいかもしれませんが、
ソースが分かれているときに全部書き換えるのはとても面倒で、間違いが起こりやすくなる原因です。
そこでお勧めしたいのが「enum」です。
整数値の定数を定義するために使うものですね。
何番目に何が入っているかわからないのであれば、「何番目」という扱いをしなければいいのです。
enum{
OBJECTTYPE = 0, //オブジェクトの種類
XPOS, //X座標
YPOS, //Y座標
ROT, //回転
SCAL, //拡大率
DATA_NUM //データの数
};
というふうに定義してしまえばあとは、
char strdata[DATA_NUM][256];
で配列を作り、それぞれ情報が必要な場所に
○○ = atoi(strdata[XPOS]);
としてやれば、オブジェクトの種類とX座標の間にデータを追加しても、要素番号を書き換える必要なく修正が終わりますね。
もっといい方法はいくらでもあります。
真似するだけでもいいですが、皆さんでそれぞれもっといい形式や使い方を考えてください。
考えるだけでも必ず力になりますので。
では、この辺で。
PR
COMMENT