-1

前回の質問が長すぎると言われたので書き直しました。

if(/*This is where I need something*/)
{
    mc.thePlayer.swingItem();
    mc.playerController.attackEntity(mc.thePlayer, e);
    delay = 0;
    break;
}

これは Minecraft の KillAura のコードの一部です。私が作った友達リストの人を対象にしないようにしようと思っています。そのリストは、Variables.java というファイルにある「friendslist」という ArrayList です。フレンドリスト内の人をターゲットにしないようにする方法を誰かが説明してくれたら、本当にありがたいです。私はJavaに比較的慣れていないので、それを素晴らしくシンプルにしてください。

前もって感謝します。

マット

4

3 に答える 3

1

ArrayListオブジェクトには と呼ばれるメソッドがありますcontains。このメソッドを使用すると、オブジェクトがコレクションの一部であるかどうかをテストできます。ドキュメントを読んでください。

実施例

ArrayList<People> people = new ArrayList<People>();
// Define the collection.
People p = new People("Dave");
// Create a new test object.
people.add(p);
// Add the object to the collection.
if(people.contains(p))
{
    // Will print out, because P exists within the people collection.
    System.out.println("Object exists in the collection");
}

元の回答の改良

コメントで示唆されているように、これはゲームの比較アルゴリズムであるため、これをもう少し最適化することをお勧めします。それを念頭に置いて、HashMapを使用することを考えました。

HashMap の例

HashMap<String, Person> friends = new HashMap<String, Person>();
// Create the HashMap object.
Person p = new Person("Dave");
// Create a test object, with the name "Dave".
String key = p.getName();
// Get a key. In this case, the object's name.
friends.put(key, p);
// Add the person to the collection.

このコードを使用すると、HashMap コレクションに人物が含まれるようになります。これで、誰かがあなたの「攻撃オーラ」に足を踏み入れたときに、その人の名前を簡単に取得して、HashMap にキーが存在するかどうかを確認できます。これは迅速 (O(1) の複雑さ) で正確です。何よりも、カスタム値を比較しています。同じオブジェクトではありません。そのため、ユーザーは自分のオブジェクトをリサイクルして、引き続きコレクションに保存できます。

うまくいけば、この編集が役に立ちます:)

于 2013-03-10T12:12:34.607 に答える
0

オブジェクトがリストにないかどうかを調べるには、次を使用します。

if (!friendslist.contains(otherPlayer))

friendslistあなたの友達リストはどこにあり、あなたの友達リストにotherPlayerあるかどうかを確認するプレーヤーです。

リスト配列リストの詳細を読むことができます

于 2013-03-10T12:12:01.950 に答える
0

すべてのピースが何であるかを伝えるのは少し難しいですが、friendlist がプレイヤー オブジェクトを含む配列リストであり、thePlayer がチェックしているものである場合、

if (!(friendslist.contains(mc.thePlayer)))
于 2013-03-10T12:14:03.980 に答える