私の 2D 環境では、プレイヤーは斜め、水平、垂直に移動できます。下のグリッドを見ると、プレーヤー ( としてマークされているx
) が現在いる場所から 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 回 true を表します。それを念頭に置いて、2 進数 (8 ビット) の 10 進数表現が数値に11111111
等しいという知識を持って:255
むしろそれを変換し、現在移動可能な場所を として保存し255
ます。
コード:
x = parseInt(11111111);
var bin = x.toInt(2);
document.write(bin);
つまり、(たとえば) 場所 (1、4、および 6) = プレイヤーの左側に壁がある場合、プレイヤーは次の場所にのみ移動できます。
01101011
次のように保存できます107
。
プレイヤーが location に移動したいとしましょう3
。これは、私のスクリプトが次のことを行う必要があることを意味します。
- 3 桁の現在移動可能な場所の数を 2 進数に変換します
- そのバイナリ コードから 3 番目の数字を取得します
- その数が 1 か 0 かを調べる
質問: Javascript でバイナリに変換せずにこれを計算することは可能ですか? はいの場合、どのように?