作为一个学校项目,我正在使用Java为Google App Engine平台创建一个浏览器游戏。它是一个战略游戏,玩家在基于拼块的棋盘上互相争斗。
我希望匹配和棋盘结构是动态的。每个比赛的板尺寸是不同的(在创建比赛时选择),玩家可以在比赛中间加入或离开,每个棋盘可以包含多个不同的对象(玩家的棋子,奖金等)并且对象可以在瓷砖之间移动。
问题在于我是Java的新手,我不确定如何表示和存储这样的多级动态结构。
1)从概念上讲,它看起来像是“对象列表的2D数组”,但它应该如何用Java语言定义?它是“对象列表列表”还是“对象列表的二维数组列表”,甚至可能是其他东西?
2)该结构的哪一部分应该存储在数据存储区(GAE的面向对象数据库)中,哪些部分应该在向玩家显示板时动态构建? 我存储的越多,显示电路板就越容易,但另一方面,当对象移动时更新会更加痛苦。
答案 0 :(得分:1)
我建议你将它存储为具有2d坐标的独立地图条目列表。
类似的东西:
class Map {
Long id
}
class MapEntry {
Long id
Long mapId //better to use Key for parent map
int x
int y
MapEntryType type //if you have different elements of map
//some other fields / payload
}
并且,通过查询所有地图元素,通过select MapEntry where map = ?
之类的查询(取决于您正在使用的数据库映射工具),您可以获取所有地图详细信息,并在服务器或客户端的内存中构建它。我敢肯定,在大多数情况下,您不需要将整个地图加载到内存中。