【发布时间】:2016-05-11 09:58:54
【问题描述】:
我在设计正确的映射时遇到了问题。
我正在开发一个自上而下的 rpg 游戏,在该游戏中,您只能在运行时看到地图的部分(块)——当从一个块移动到另一个块时,会加载新的块数据。
根据我的位置加载不同的数据。
目前我的代码看起来像这样(但肯定更长)
public static final int getChunkIdForPos(int x, int y){
switch (x) {
case 1248:
switch (y) {
case 1247: return R.raw.overworld_512;
case 1248: return R.raw.overworld_528;
case 1249: return R.raw.overworld_544;
default: break;}break;
case 1249:
switch (y) {
case 1247: return R.raw.overworld_513;
case 1248: return R.raw.overworld_529;
case 1249: return R.raw.overworld_545;
default: break;}break;
}
return R.raw.overworld_161;
}
问题是这段代码不容易阅读并且不容易维护。关于如何做得更好的任何想法?
我正在考虑使用Map<Integer,<Map<Integer,Integer>> 来映射数据,但这需要先创建地图。这也意味着您携带大量“死”对象作为钥匙(SparseArray<SparseArray<>> 也是如此)
注意:您不能按照answer - Implemention a Lookup Table 中的建议通过任何数学来确定返回值
选择这种设计的原因是在不创建任何对象的情况下获得答案 - 查找只是通过两个 switch/case 语句运行并即时提供答案!
【问题讨论】:
-
如果您使用地图,您希望有多少“死”键?
-
在每个地图块中封装可达地图的块怎么样?
-
我在想一张至少有 10.000 x 10.000 块的地图
-
这个想法是地图块可以由其他玩家提供并帮助创建世界的一部分
标签: java dictionary