Получение элемента из ArrayList, внутри другого ArrayList в Java? (Board хочет получить игрока внутри локации) - PullRequest
1 голос
/ 23 февраля 2011

Это для игры типа монополии на Java.Я хочу знать, как я могу получить конкретного игрока по его идентификатору, он просматривает список массивов на доске, проверяет каждый массив arrayList для этого конкретного игрока.

public class Board 


private ArrayList<Location> AllLocations = new ArrayList<Location>();
public Player getPlayer(int pl){
int index = 0;
     for(Location temp : AllLocations)
    {
        if(temp.getPlayerId() == pl)
        {return temp;}
    }

    return null;

}
}

public abstract class Location {
private ArrayList<Player> Players = new ArrayList<Player>();

public Player getPlayerId (int id) {

    int index = 0;
     for(Player temp : Players)
    {
        if(temp.getId() == id)
        {return temp;}
        else
        {return null;}
    }

    return null;
}


}

public class Player {

public int getId() {

    return PlayerId;
}

} 

Я просто хочу получить его, чтобы я мог узнать, например, где находится игрок с iD 1, где он находится на доске.

Ответы [ 3 ]

1 голос
/ 23 февраля 2011

Вместо того, чтобы иметь список местоположений и необходимости искать игроков на основе идентификатора. Добавьте переменную местоположения к объекту игрока, чтобы игрок всегда знал, где он находится.

Несвязанный, использование temp в качестве имени переменной в циклах for затрудняет чтение кода. Я бы предложил более описательное имя, например, «игрок» или «местоположение».

0 голосов
/ 23 февраля 2011

У вас должен быть (на вашей доске или в игре) список со всеми игроками (проиндексированный по идентификатору) - или карта, если ваши идентификаторы не последовательны.Они действительно не меняются независимо от игры, поэтому нет смысла искать их всегда.

0 голосов
/ 23 февраля 2011

IMHO Класс Location не должен содержать список игроков на нем. В большинстве случаев этот список будет пустым, поэтому бессмысленным. Подумайте о добавлении переменной местоположения к игроку или введении некоторого класса игрового контроллера, который связывает игроков с их местоположениями.

...