做一个android 简单的游戏, 有多个关卡,现在只做了一关, 出的兵的数量和种类是定义在 数组中 。
还有其他很多 属性的数组,每一关肯定会有不同 ,如下
private int enemyArray[][] = {{1},{1} ,{1,2} }多个关卡,那么肯定要定义在数据库中,那么数据库如何设计 ,表中的对应 enemyArray 。我最初的想法是每一维 固定3个值。比如下面的enemyArray的定义,第一维是1个数 ,第三维有2个数,假设以后每一维固定为3个值。
原来的private int enemyArray[][] = {{1},{1}, ,{1,2} 就可以变为 private int enemyArray_t[][] = {{-1,1,-1},{-1,1,-1},,{-1,1,2}, -1表示为空,此处不出任何士兵 。
那么在数据库对应 enemyArray 的字段就可以表示为*1**1*12 ,类型是字符串型,*对应-1 ,这样一个字符一个字符的读入,就可以完成对 enemyArray的赋值。第一次做 ,请大家指教 

解决方案 »

  1.   

    Android是基于Java的,其开发的时候设计了SQLLite作为它的一个轻量级数据库,适合储存一些静态的信息。不过貌似每个应用程序对于数据库的使用大小是有限制的,你可以自己查一查。既然是基于Java,建议你用类来定义你的游戏数据吧。这样操作起来会更方便一些。如果可能,可以专门建一个类,使用静态(static)字段来储存这种关卡定义,这样直接从外部调用类方法而不用新建类实例。这是我个人的一点看法。比如
    /*   数据类定义  */
    package XXX;import java.util.*;
    import ....;public class Dataset{
       private ArrayList<GameData> gamedata = null;
       public static ArrayList<GameData> getGameData(){
           return gamedata;
       }
       public static void init(){
           gamedata = new ArrayList<GameData>();
           GameData level_1 = new GameDate();
           /*  Do something with level 1 data */
           gamedata.add(level_1);
       }
    }
    /*   数据类调用  */
    package XXX;import java.util.*;
    import ....;public class Console{
        ArrayList<GameData> gamedata = null;
        public static void main(String argv[]){
           Dataset.init();
           gamedata = Dataset.getGameData();
           /*  Do something you like */
        } 
    }