再战中原之数据表设计及在程序中的运用

Player(玩家)
ID int 玩家标识
monarchID int 君主(武将ID)
order int 军令
color uint 颜色

 

Castle(城池)
ID int 城池标识
name String  城池名称 
playerID int 玩家标识(城池归属于哪个势力,为0则是空城)
captainID int 太守标识(武将ID)
gold int
rice int
treasure int
soil int 土地值
industry int 产业值
population int 人口
disaster int 防灾值
rule int 统治度
reservist int 后备后数量
funList String 功能列表(武器店|学校|医馆|市场)
genList String 武将列表(武将ID)
conList String 连通列表(城池ID)
x int 在地图上的X坐标
y int 在地图上的Y坐标

 

General(武将)
ID int 武将标识
name String 名称
strength int 体力
power int 武力
knowledge int 知识
loyalty int 忠诚度
morality int 品德
exp int 经验
soliders int 士兵数
weaponID int 武器ID(装备ID)
armorID int 防具ID(装备ID)
armyType int 军种(1-山|2-水|3-平原)
status int 状态(0-在野|1-出仕)
imgUrl String 头像路径

 

Equip(装备)
ID int 装备标识
name String 名称
type int   类型(1-剑|2-刀|3-矛|4-防具)
price int 价格
value int 攻击或防御值
weight int 重量
condition int 购买条件(0-任何人|1-武90|2-德90|武将ID)

 

Fun(功能)
ID int 功能标识,填装备店、学校、医馆或商行的ID
type String  类型,指定是哪种功能店,为了程序方便,这里直接填表名 
EquipShop(装备店)
ID int 装备店标识
swdList String 剑列表(装备ID)
bswList String 刀列表(装备ID)
sprList String 矛列表(装备ID)
armList String 防具列表(装备ID)
 School(学校)
 ID int  学校标识 
Hospital(医馆)
ID int 医馆标识
price int 价格
recover int 恢复体力值
Firm(商行)
ID int 商行标识
buyRate int 一百两金对应多少石米
sellRate int 一百石米对应多少两金

 

以上是游戏的数据库设计,不过没有遵循SQL的数据库设计范式。因为如果表之间存在1对n联系的话还要再增加关联表,这样增加了维护的工作量。

1、数据的使用方法是在Excel里填数据,然后使用自己写的工具通过Excel表生成一个自定义格式的数据文件和一个使用AS3语言的VO类。游戏初始化的时候按数据文件的数据实例对应的VO类。这样可以实现数据的强类型,方便编程。

2、每一个表都在程序中用一个字典储存,字典的键对应ID。

3、对于存在1:n关系的关联表,VO类保持与其相关的实例引用,而不是ID(个人认为保持引用的开销应该比int类型要小)。例如,城池表有将军列表,这里的genList为String类型,填值的格式为General|10001,10002,10003,这样在程序初始化时将该字段解析为Vector类型,并存储id为10001,10002和10003的General类型实例。所以基础表要先初始化,提供实例给依赖他的对象。对于保存对象引用的做法可能会造成意想不到的问题,比如我要持久化一个对象到本地,但并不需要他引用的对象,这样就会添加额外的开销。保存ID的话相对比较灵活,而且从自定义数据中解析成VO也不需要复杂的处理。

4、玩家进行游戏的时候会修改VO里面的数据,这些会被修改的VO实例统一组合到一个全局类。保存游戏进度时将该全局类转为ByteArray对象,压缩保存到本地。下次游戏开始时则读取该数据还原。

以上的数据表是游戏的基础,根据霸王大陆的游戏规则还有很多配置表或计算公式,如下是其中一部分,在开发到相关模块时再进行处理:

1、每回合分配行动力按武将数量及带兵数配置表(最小最大值,上一回合有剩行动力可累加到下一回合)
2、计谋消耗行动力配置表
3、战术消耗战术值配置表
4、按等级和武力兵种数量分配配置表
5、不同军种在不同地形上按士兵数量消耗行动力配置表
6、拥有城池数量可获得军令数量配置表
7、升级需要经验配置表
8、升级时按原武力确定提升武力值配置表
9、读书提升智力的上限
10、读书按智力确定费用和提升知点数配置表(在学校表里)
11、按知领悟计谋配置表
12、按条件(知,武,忠)确定计谋成功率和伤害值配置表
13、情报收集按德和知出现的情报结果配置表
14、单挑时牵制、攻击和拼命的概率配置表
15、按武将数量和带兵数量消耗粮食量的计算公式
16、单挑剑、刀、矛相克,其对应成功概率配置表
17、四月收金、五月收粮发生天灾暴动等按开发度和统治度的计算公式
18、武将出生时间地点和死亡时间配置表

posted @ 2013-10-07 14:29  公元奇迹  阅读(258)  评论(0编辑  收藏  举报