2012-03-07 54 views
0

我目前存储游戏数据,例如在多维阵列移动的序列,其被定义为:存储的数值数据如游戏优雅的方式移动

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

阵列是当然多大。

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

如果使用XML文件,会是什么形式和什么是回收的方法?

如果使用SQLite数据库,这将是执行源代码之前得到数据库里面的数据的方式吗?

的任何示例,将不胜感激。

+0

是只移动将被存储为游戏会话?或者你是否想在下次打开游戏时将它们写入磁盘进行阅读? – Danny 2012-03-07 19:15:58

+0

@Danny看起来像是用于只读游戏数据 - 永远不需要在运行时存储,只能被检索。 – tcovo 2012-03-07 19:23:17

+0

是@tcovo。这是固定的数据,在游戏中不会改变。它只需要使用while循环一次检索到列表或数组中。这在游戏中保持不变,并且不是用户生成的。 – newyorkgena 2012-03-07 19:35:30

回答

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

+0

这实际上并不是游戏移动列表。它将是一个将在屏幕上显示的元素列表。该数组保存元素进入屏幕的顺序。每个元素将保持元素类型(怪物,尖刺,浮动平台等)及其在屏幕上的位置。这是一个动作侧面滚动游戏。我想到的是一个2D对象数组,我会通过遍历XML文件中的值来在游戏开始时创建/弹出这个数组或对象列表(只有一次)。我不知道要使用什么xml文件,或者如何格式化和访问它。 – newyorkgena 2012-03-07 22:45:23

+0

@newyorkgena是的。因此,JSON的想法,因为如果你决定有一个对象的数组,而不是以后整数更容易改变。更新上面的答案来描述。 – JRaymond 2012-03-08 17:16:43

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} 

等等