AndEngineでCSVファイルを使いたい

2014年2月22日土曜日

andEngine

t f B! P L
ゲームでいろいろパラメータの設定をするときはコード中に直に打つのはいやですね

例えばモンスターのステータス管理とかするだけでも

名前 HP MP 攻撃力 防御力 素早さ 経験値 落とすお金 落とすアイテム ・・・
スライム 10 5 10 20 10 10 40 やくそう 
こうもり 15 0 10 10 20 15 50 やくそう
 ・
 ・
 ・

こんな調子でデータが大量です
やっぱり別ファイルの表形式で管理したいですね



最初はデータベースを使ってみようとやってたんですが、上手く使いこなせない・・・

そこでなじみ深いCSV形式でやればいいじゃん、そこまで大量のデータでもないしと思いやってみた

やることは
①データをテキストで読み込み
②行に分けて配列に変換
③二次元配列に変換

CSVの保存場所は画像ファイルとか音楽ファイルを管理しているのとおなじ「assets」フォルダ
AndEngineでよく使うSmartListの二次元配列形式に変換する
テキスト読み込みはrokuta96のAndroidアプリ開発を参考にした

①データをテキストで読み込み
 public String readTXT(String filename){
  // TXT読み込み
        InputStream is = null;
        BufferedReader br = null;
    
        StringBuilder sb = new StringBuilder();
        try
        {
            try
            {
                is = this.getBaseActivity().getAssets().open(filename);
                br = new BufferedReader(new InputStreamReader(is));
       
                String str;
                while((str = br.readLine()) != null)
                {
                    sb.append(str +"\n");
                }
            }
            finally
            {
                if (br != null)
                {
                    br.close();
                }
            }
        }
        catch (IOException e)
        {
            // 読み込みエラー
        }
        
        return sb.toString();
 }


②行に分けて配列に変換
③二次元配列に変換
 public SmartList<String> getLine(String string){
  SmartList<String> values = new SmartList<String>();
  String[] splits = string.split(",", 0);
  for(int i=0;i<splits.length;i++){
   values.add(splits[i]);
  }
  return values;
 }

 public SmartList<SmartList<String>> getList(String string){
  SmartList<SmartList<String>> values = new SmartList<SmartList<String>>();
  String[] str = string.split("\n", 0);
  for(int i=0;i<str.length;i++){
   values.add( getLine(str[i]) );
  }
  return values;
 }


数字に変換するのは普通のJava的に
Float.parseFloat(str)
を使えばOK

Translate

このブログを検索

  • ()
  • ()
もっと見る

QooQ