자바를 배우려면 고전적인 "우주에서 날아 다니는"2D 게임을 만들고 있습니다. 플레이어 오브젝트 외에도 GameObject 클래스를 확장하는 고유 한 클래스가있는 수많은 적/장애물 (스 캐빈 저, 사냥꾼, 혜성, 소행성)이 있습니다. 여러 scavengers, 혜성 등이있을 수 있기 때문에 이들은 arraylists에 저장됩니다. 그러나 각 객체가 상호 작용할 수 있기 때문에 혜성 arraylist, 소행성 배열리스트 등의 객체에 따라 각각의 외계인이 상호 작용할 수 있도록 많은 반복 및 코드가 있습니다. 내 게임 업데이트 기능에서게임 디자인 : 오브젝트 arraylists 구성
내가 가진 :
public void update() {
ArrayList<Rock> rockList = rock.getRockList();
ArrayList<Scavenger> scavengerList = scavenger.getScavengerList();
ArrayList<Hunter> hunterList = hunter.getHunterList();
....
npc.update(player, scavengerList, hunterList, rockList);
...
가}
public void update(Player player, ArrayList<Scavenger> scavengerList, ArrayList<Hunter> hunterList, ArrayList<Rock> rockList) {
for(int i = 0; i < scavengerList.size(); i++) {
scavengerList.get(i).update(player,scavengerList, ,hunterList rockList);
}
for(int i = 0; i < hunterList.size(); i++) {
hunterList.get(i).update(player,scavengerList, hunterList, rockList);
}
...
}
그리고 (게임 오브젝트 클래스를 확장)
내 NPC 클래스의
마침내 나는 업데이트 기능이 내 청소부 수업, 사냥꾼 수업 등public class Hunter extends NPC{
...
public void update(Player player,ArrayList<Scavenger> scavengerList, ArrayList<Hunter> hunterList, ArrayList<Rock> rockList) {
"update all hunter objects according to the player, scavengers, rocks etc"
}
이 접근법은 다소 번거롭고 더 많은 클래스가 만들어지면 숫자 또는 arraylists를 파싱하고 반복해야 할 필요가 없습니다. 누구든지이 작업을 더 효과적으로 수행 할 것을 권장 할 수 있습니까? 모든 NPC 개체를 포함하는 목록 하나를 가지고 클래스 형식을 추적하고 이에 따라 업데이트하는 것이 확실한 방법 일 것입니다. 더 좋은 방법인가요? 아니면 누군가가 올바른 방향으로 나를 가리킬 수 있습니까?
'World' 인스턴스를 전달하는 것이 더 쉽지 않을까요? 당신은 기본적으로 for (updatableThing : updatableThings) {updatableThing.update (world); }' – plalx
어쩌면 완전히 이해하지 못했지만 (여전히 배우기는하지만) World 인스턴스는 모든 개체를 포함하고 업데이트하는 목록을 보유하고 있거나 잘못 이해하고 있습니까? – user2913053