본문 바로가기

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

[내가 만든 프로젝트 코드 분석 | 리듬게임 만들기] 11.키보드 입력 이벤트 리스너

package dynamic_beat_11;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class KeyListener extends KeyAdapter {
	// 키보드 이벤트 클래스
	@Override
	public void keyPressed(KeyEvent e) { // 키 이벤트 감지 
		if(DynamicBeat.game == null) {// 현재 게임이 진행되지 않는다면 함수종료
			return;
		}
		if(e.getKeyCode() == KeyEvent.VK_S) { // 누른 키 S 감지
			DynamicBeat.game.pressS(); // pressS메소드 작동
		}
                                     .
                                     .생략
                                     .
	}  
	
	@Override //키를 떼었을 때 이벤트 처리
	public void keyReleased(KeyEvent e) {
		if(DynamicBeat.game == null) {
			return;
		}
		if(e.getKeyCode() == KeyEvent.VK_S) { // 떼는 키 S 감지
			DynamicBeat.game.releaseS(); // releaseS메소드 작동
		}
			                                .
                                      .생략
                                      .
}

하나의 게임이 하나의 단위로 다뤄질 수 있도록 게임 클래스를 만들어서 관리합니다.

package dynamic_beat_11;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;

import javax.swing.ImageIcon;
import javax.swing.JLabel;

public class Game extends Thread { 
	
	private Image noteBasicImage = new ImageIcon(Main.class.getResource("../images/noteBasic.png")).getImage();
	private Image noteRouteLineImage = new ImageIcon(Main.class.getResource("../images/noteRouteLine.png")).getImage();
                                    .
                                    .생략
                                    .
	private Image noteRouteKImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
	private Image noteRouteLImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
	// 	노트경로이미지 변수 생성
	public void screenDraw(Graphics2D g) {
		g.drawImage(noteRouteSImage, 228, 30, null);
                                    .
                                    .생략
                                    .
		g.drawString("000000", 565, 702);
	}
	
	public void pressS() { // 버튼 이벤트 기능 메소드
		noteRouteSImage = new ImageIcon(Main.class.getResource("../images/noteRoutePressed.png")).getImage(); // Press이미지 반응
		new Music("drumSmall1.mp3", false).start(); // 버튼 효과음 
	}
	
	public void releaseS() {// 버튼 해제 이벤트 기능 메소드
		noteRouteSImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
	}
	public void pressD() {
		noteRouteDImage = new ImageIcon(Main.class.getResource("../images/noteRoutePressed.png")).getImage();
		new Music("drumSmall1.mp3", false).start();
	}
	
                                    .
                                    .생략
                                    .
	
	@Override // 쓰레드 메소드
	public void run() {
		
	}
}