본문 바로가기

개인프로젝트/리듬게임만들기

[내가 만든 프로젝트 코드 분석 | 리듬게임 만들기] 7. 곡 선택 기능구현

왼쪽 오른쪽 버튼을 눌러서 곡을 선택할 수 있도록 기능을 구현합니다.

startButton기능에서 곡 선택 화면에 들어가면 메인음악이 꺼지고 선택곡의 하이라이트가 나오도록 합니다.

@Override
	public void mousePressed(MouseEvent e) {
		Music buttinEnteredMusic = new Music("buttonEnteredMusic.mp3", false);
		buttinEnteredMusic.start();
		introMusic.close(); // 곡선택 화면에서 메인음악 끄기
		Music selectedMusic = new Music("Again Selected.mp3", true);
		selectedMusic.start(); // 곡 하이라이트 재생
		selectTrack(0);
		startButton.setVisible(false);
		quitButton.setVisible(false);
		leftButton.setVisible(true);
		rightButton.setVisible(true);
		background = new ImageIcon(Main.class.getResource("../images/mainBackground.jpg")).getImage();
		isMainScreen = true;
			}

곡을 선택시 곡이 변경하기위해 Track클래스를 만들어서 객체지향적 기능을 구현합니다.

곡에 대한 정보를 담아 놓은 객체를 생성합니다.

public class Track {

	private String titleImage; // 제목 부분 이미지
	private String startImage; // 게임 선택창 표지 이미지
	private String gameImage; // 해당 곡을 실행했을 때 표지 이미지
	private String startMusic; // 게임 선택 창 음악
	private String gameMusic; // 해당 곡을 실행했을 떄 음악
	// 변수생성
	public String getTitleImage() { // getter,setter 생성
		return titleImage;
	}
	public void setTitleImage(String titleImage) {
		this.titleImage = titleImage;
	}
	public String getStartImage() {
		return startImage;
	}
	public void setStartImage(String startImage) {
		this.startImage = startImage;
	}
	public String getGameImage() {
		return gameImage;
	}
	public void setGameImage(String gameImage) {
		this.gameImage = gameImage;
	}
	public String getStartMusic() {
		return startMusic;
	}
	public void setStartMusic(String startMusic) {
		this.startMusic = startMusic;
	}
	public String getGameMusic() {
		return gameMusic;
	}
	public void setGameMusic(String gameMusic) {
		this.gameMusic = gameMusic;
	}
	
public Track(String titleImage, String startImage, String gameImage, String startMusic, String gameMusic) { // 곡 생성자
		super();
		this.titleImage = titleImage;
		this.startImage = startImage;
		this.gameImage = gameImage;
		this.startMusic = startMusic;
		this.gameMusic = gameMusic;
	}	
}

Track클래스

ArrayList<Track> trackList = new ArrayList<Track>(); // 곡 정보리스트 사용

private Music selectedMusic;
private Image titleImage; 
private Image selectedImage;
private int nowSelected = 0; // 첫번째 곡 최초 선택 
// Track 관련 변수 선언

trackList.add(new Track("Again Title Image.png", "Again Start Image.png", "Again Game Image.png", "Again Selected.mp3", "Again.mp3"));
trackList.add(new Track("Higher Title Image.png", "Higher Start Image.png", "Higher Game Image.png", "Higher Selected.mp3", "Higher.mp3"));
trackList.add(new Track("The Christmas Title Image.png", "The Christmas Start Image.png", "The Christmas Game Image.png", "The Christmas Selected.mp3", "The Christmas.mp3"));
// 곡 리스트 변수 초기화 저장

public void selectTrack(int nowSelected) {
		if(selectedMusic != null)
			selectedMusic.close(); // 실행중인 곡 종료
		titleImage = new ImageIcon(Main.class.getResource("../images/" + trackList.get(nowSelected).getTitleImage())).getImage();
// 현재 선택된 곡의 제목 이미지값을 선택
		selectedImage = new ImageIcon(Main.class.getResource("../images/" + trackList.get(nowSelected).getStartImage())).getImage();
// 현재 선택된 곡의 타이틀 이미지값을 선택
		selectedMusic = new Music(trackList.get(nowSelected).getStartMusic(), true);
// 현재 선택된 곡 음원 선택
		selectedMusic.start();
	}

Track select