我正在开发一款游戏,我需要将我的二进制图 block ID 集转换为一个 switch 语句,以便我可以从 sprite 表中获取正确的图 block 。
我需要将包含我需要的所有可能图 block 的列表从 255 个转换为仅 48 个左右的图 block ,并将其转换为可用于获取我的图 block ID 的整数。
我可以得到一些关于开始这个声明的帮助吗?
还有一个 x 意味着在那里设置什么位并不重要。
编辑:还应该说这是一个 8 位数字 DCBA4321
最佳答案
我建议为每个可能的组合创建一个包含 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/