-1

// さて、もともと人々は次のようなもののために ID を作成しています:

var Item1 = 0;
var Item2 = 1;
var Item3 = 2;
var Item4 = 3;
var Item5 = 4;

// ... 等々。

// 次に、次のようなチェック用の変数をさらに作成します。

var HasItem1 = false;
var HasItem2 = false;
var HasItem3 = false;
var HasItem4 = false;
var HasItem5 = false;

// 次に、コードのどこかで、ユーザーまたはプレーヤーにアイテムを持たせたい場合にアイテムを true に設定します。

// 代わりに、次のようなことをしたかった:

var Item1 = 1;
var Item2 = 2;
var Item3 = 4;
var Item4 = 8;
var Item5 = 16;

var HasItems = 0; // 0 = no items added.

// 私のコードのどこか:

HasItems = Item1 + Item3 + Item4; // 1 + 4 + 8 = 13

// しかし、たとえばプレイヤーが Item3 を持っているかどうかを確認する方法が見つかりません。

if(HasItems != 0 && (HasItems & Item3) != -1) { // It was something like this.
    // Has the item we're looking for.
}

// 前に話した ID システムを見たのですが、どこだったか忘れてしまいました。// この ID のシステムについて知っている人はいますか?

// !!!編集!!! http://blog.millermedeiros.com/using-integers-to-store-multiple-boolean-values/

例:

[code]
var Item1 = (1 << 1);
var Item2 = (1 << 2);
var Item3 = (1 << 3);
var Item4 = (1 << 4);
var Item5 = (1 << 5);

var Items = (Item1 | Item3 | Item4);

if(Items & Item1) {
print("true 1");
} 
else {
print("false 1");
}

if(Items & Item2) {
print("true 2");
} 
else {
print("false 2");
}

if(Items & Item3) {
print("true 3");
} 
else {
print("false 3");
}

if(Items & Item4) {
print("true 4");
} 
else {
print("false 4");
}

if(Items & Item5) {
print("true 5");
} 
else {
print("false 5");
}
[/code]

出力:

true 1
false 2
true 3
true 4
false 5

ご回答ありがとうございます。bitwise と walla を検索しました。冬の血に感謝します!あなたの懸念のために、私はそれが限られた量の値しかサポートしていないことを知っています.これは小さなシステムを対象としています.

4

1 に答える 1

0

1 ビットのチェックは、次のコードで実行できます。 (HasItems & (1 << itemNumber)) != 0 ここで、itemNumberは 0 から始まる項目の番号です。

また、これはより普遍的で便利かもしれません: http://msdn.microsoft.com/en-us/library/system.collections.bitarray.aspx http://msdn.microsoft.com/en-us/library/system .collections.specialized.bitvector32.aspx

于 2013-10-18T05:29:58.850 に答える