게임 캐릭터 관리 시스템_2

호떡·2022년 7월 24일
0

📝관련 실습: 객체배열관리_팀과제 (MonsterManager.java)


public class MonsterManager {
	private static MonsterManager instance = new MonsterManager(); 
	
	public static MonsterManager getInstance() {
		return instance;
	}
	
	private Monster[] monsters;
	private int size;
	
	public int getSize() {
		return this.size;
	}
	
	private MonsterManager() {
		this.monsters = new Monster[100];
		this.size = 0;
	}
	
//	-------------------------------------------------------------
	// 등록
	public void addMonster(Monster monster) {
		this.monsters[this.size++] = monster;  	
	}
	
	// 삭제
	public void removeMonster(int id) {
		for(int i =0; i<size; i++) {
			if(id == monsters[i].getId()) {
				for(int j=i; j<size-1; j++) {
					monsters[j] = monsters[j+1];
				}
				this.size--;
				break;
			}
		}
	}
	
	// 캐릭터 목록 관련
	public Monster[] getList() {
		Monster[] tmp = new Monster[size];
		for(int i =0; i<size; i++) {
			tmp[i] = monsters[i];
		}
		return tmp;
	}
	
	//조회
	//이름으로 조회
	public Monster[] searchByName (String keyword) {
		int cnt = 0;
		for(int i=0; i < size; i++) {
			if(monsters[i].getName().contains(keyword)) {
				cnt++;
			}
		}
		Monster[] tmp = new Monster[cnt];
		int idx = 0;
		for(int i=0; i < size; i++) {
			if(monsters[i].getName().contains(keyword)) {
				tmp[idx++] = monsters[i];
			}
		}
		return tmp;
	}
    
	//공격력으로 조회
	public Monster[] searchByAttack (int min, int max) {
		int cnt = 0;
		for(int i=0; i < size; i++) {
			if(monsters[i].getAttack() >= min && monsters[i].getAttack()<= max) {
				cnt++;
			}
		}
		Monster[] tmp = new Monster[cnt];
		int idx = 0;
		for(int i=0; i < size; i++) {
			if(monsters[i].getAttack() >= min && monsters[i].getAttack()<= max) {
				tmp[idx++] = monsters[i];
			}
		}
		return tmp;
	} 
	
} //end class

구현 객체들을 배열로 관리하면 인덱스로 표현되므로 대입이나 제어문에서 활용하기 매우 쉬워 많은 혜택을 본다.

0개의 댓글