我正在开发游戏,我需要将我的二进制tile id设置转换为switch语句,这样我就可以从精灵表中获取正确的tile。
我需要将包含我需要的所有可能图块的列表从255转换为大约48个左右的图块转换为一个整数,我可以使用它来获取我的图块ID。
我可以在开始此声明时获得一些帮助吗?
x也表示在那里设置的位并不重要。
编辑:还应该说这是一个8位数字DCBA4321
答案 0 :(得分:2)
我建议为每个可能的组合创建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];
}
答案 1 :(得分:1)
我建议你研究Java的按位运算符:Click Here
class BitDemo {
public static void main(String[] args) {
int bitmask = 0x000F;
int val = 0x2222;
// prints "2"
System.out.println(val & bitmask);
}
}
一旦屏蔽了该值,就可以确定要抓取的正确图块。
答案 2 :(得分:1)
除非您有从app_kios
到目标值的数学公式,否则您必须执行以下操作。我已将其分为子部分以帮助支持可读性和维护。
dcba4321