java - 如何在 java 中正确执行二进制 switch 语句?

标签 java arrays list libgdx switch-statement

我正在开发一款游戏,我需要将我的二进制图 block ID 集转换为一个 switch 语句,以便我可以从 sprite 表中获取正确的图 block 。

我需要将包含我需要的所有可能图 block 的列表从 255 个转换为仅 48 个左右的图 block ,并将其转换为可用于获取我的图 block ID 的整数。

我可以得到一些关于开始这个声明的帮助吗?

还有一个 x 意味着在那里设置什么位并不重要。

编辑:还应该说这是一个 8 位数字 DCBA4321

enter image description here

最佳答案

我建议为每个可能的组合创建一个包含 256 个值的静态数组,如下所示:

static final int[] DCBA4321_TO_VALUE = {
    // 0000
    47, 44, 36,343, 37, 14, 35, 32, 45, 34, 15, 40, 42, 41, 33, 38,
    // 0001
    28, 28, 27, 27, 26, 26, 23, 23, 28, 28, 27, 27, 26, 26, 23, 23, 
    // 0010
    21, 21, 21, 21, 24, 24, 24, 24, 16, 16, 16, 16, 30, 30, 30, 30,
    // 0011
     1,  1,  1,  1,  3,  3,  3,  3,  1,  1,  1,  1,  3,  3,  3,  3, 
    ...
};

有了这样的数组,您可以简单地使用位移位连接您的 DCBA 和 4321 值,并将其添加并映射到值。这对我来说似乎是最快的方法

int getValue(int DCBA, int num) {
    return DCBA4321_TO_VALUE[(DCBA << 4)+num];
}

关于java - 如何在 java 中正确执行二进制 switch 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30091759/

相关文章:

java - 奇怪的编译问题

java - Android NDK UnsatisfiedLinkError 未找到 native 方法

java - AsyncTask "onPostExecute"方法从未被调用

Javascript 对象数组,其中对象还包含数组

python - 在 Numpy 中运行 max/limsup : what optimization?

导航栏的CSS下拉菜单添加

python - 比较嵌套列表的相似度

java - 用java粗略指南填写excel或pdf

c++ - 100% 的数组在函数中正确,75% 的数组在 CALLING 函数中正确 - C

python - 有没有一种方法可以使一个变量具有多种含义