例えばモンスターのステータス管理とかするだけでも
名前 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
0 件のコメント:
コメントを投稿