一个android 游戏数据库的设计疑点
一个android 游戏数据库的设计疑问?
做一个android 简单的游戏, 有多个关卡,现在只做了一关, 出的兵的数量和种类是定义在 数组中 。
还有其他很多 属性的数组,每一关肯定会有不同 ,如下
多个关卡,那么肯定要定义在数据库中,那么数据库如何设计 ,表中的对应 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的赋值。
第一次做 ,请大家指教
------解决方案--------------------
Android是基于Java的,其开发的时候设计了SQLLite作为它的一个轻量级数据库,适合储存一些静态的信息。不过貌似每个应用程序对于数据库的使用大小是有限制的,你可以自己查一查。
既然是基于Java,建议你用类来定义你的游戏数据吧。这样操作起来会更方便一些。如果可能,可以专门建一个类,使用静态(static)字段来储存这种关卡定义,这样直接从外部调用类方法而不用新建类实例。这是我个人的一点看法。
比如
做一个android 简单的游戏, 有多个关卡,现在只做了一关, 出的兵的数量和种类是定义在 数组中 。
还有其他很多 属性的数组,每一关肯定会有不同 ,如下
- C/C++ code
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的赋值。
第一次做 ,请大家指教
------解决方案--------------------
Android是基于Java的,其开发的时候设计了SQLLite作为它的一个轻量级数据库,适合储存一些静态的信息。不过貌似每个应用程序对于数据库的使用大小是有限制的,你可以自己查一查。
既然是基于Java,建议你用类来定义你的游戏数据吧。这样操作起来会更方便一些。如果可能,可以专门建一个类,使用静态(static)字段来储存这种关卡定义,这样直接从外部调用类方法而不用新建类实例。这是我个人的一点看法。
比如
- Java code
/* 数据类定义 */ 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 */ } }