优雅的方式来存储游戏动作等数值数据

时间:2012-03-07 19:06:08

标签: android list multidimensional-array

我目前正在存储游戏数据,例如多维数组中的一系列移动,定义为:

private final int[][] gameMoves = {{1},{2},{0},{3},{1,4},{1,4,5},{2,4}} 

阵列当然要大得多。

我觉得应该有一种更优雅的方式来实现这一点,可能使用XML文件或SQLite数据库将数据与代码分开存储,然后在while循环中检索它。

如果使用XML文件,那么格式和检索方法是什么?

如果使用SQLite数据库,在执行源代码之前如何在数据库中获取数据?

非常感谢任何例子。

2 个答案:

答案 0 :(得分:0)

如果这是永远不会改变的数据,那么没有任何理由坚持它,特别是如果它经常被读取,因为你将在阅读中受到性能影响。如果有的话,也许是一个包含游戏数据对象的独立包,每个包含“gameMoves”,可能会成为赢家。

或者,如果你从概念和/或要求的角度分离,JSON可能是一个很好的方法,因为它更多地直接绑定到多维数组而不是XML文件,并且当然更容易与数据库合作。

例如,您的JSON文件可能是:

[1, 2, 3, [45, 6, 7], 8, [9, 10]]

然后,您可以使用JSON库以最小的麻烦解析它:

JSONArray data = new JSONArray(textFromFile);

for(i = 0; i < data.length; ++i) {
    //Read data
}

请参阅http://developer.android.com/reference/org/json/JSONArray.html

答案 1 :(得分:0)

如果这些数字表示移动,则应使用常量。

const int MOVE_WAIT= 0;
const int MOVE_LEFT= 1;
const int MOVE_RIGHT = 2;
const int MOVE_UP = 3;
const int MOVE_DOWN = 4;
const int[] SHOOORYUKEN = {MOVE_RIGHT, MOVE_DOWN, MOVE_RIGHT};

int[][] gameMoves = {{MOVE_LEFT},{MOVE_RIGHT},{MOVE_WAIT},{MOVE_UP},SHOOORYUKEN} 

等...

相关问题