在我的2D环境中,玩家可以对角线,水平和垂直移动。查看下面的网格时,您可以看到播放器(标记为x
)可以移动到他(或她xD)现在的8个不同位置。
1 | 2 | 3
-----------
4 | x | 5
-----------
6 | 7 | 8
而不是将其存储为(这是很多数据):
Go1 = true;
Go2 = true;
Go3 = true;
Go4 = true;
Go5 = true;
Go6 = true;
Go7 = true;
Go8 = true;
我认为最好先将其转换为:
11111111
..代表8次真实。考虑到这一点并且知道二进制数11111111
(8位)的十进制表示等于nummer:255
我宁愿将其转换并存储当前可能的位置 - 移动 - 至255
。
代码:
x = parseInt(11111111);
var bin = x.toInt(2);
document.write(bin);
这意味着如果(例如)位置(1,4和6)的墙壁=玩家的左侧,玩家只能移动到:
01101011
可以存储为:107
。
假设玩家想要移动到位置3
。这意味着我的脚本必须执行以下操作:
问题: 有没有可能计算这个而不在Javascript中来回转换为二进制?如果是,怎么样?
答案 0 :(得分:0)
比特移位使相关数字最不重要,然后测试值的奇偶校验:
function getPositionInRow(rowval, pos) {
return (rowval >> (8 - pos)) % 2;
}
这将返回指定位置的值,从左边开始计数,从1开始索引。