忍者ブログ

神戸電子専門学校ゲームソフト学科の生徒が運営するGESのブログです。

   

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

csvとenumの応用

こんにちは、です。
前回私が書いたのは外部データの読み書きについて、
「使った方が良い!」ということを前面に押し出して話をしました。
今回はもう少し具体的に話をしようかと思います。

拍手[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

NAME
TITLE
MAIL(非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS(コメント編集に必須です)
SECRET
管理人のみ閲覧できます

ブログ内検索

最新コメント

[01/29 人面犬]
[10/01 8ch]
[09/12 uncle]
[09/10 某卒業生]
[06/07 uncle]

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

テスト

Copyright ©  -- GESブログ --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]