해당 코드는 아래의 동빈나님의 youtube 영상을 보면서 만들었습니다. 좋은 영상 감사합니다. https://www.youtube.com/playlist?list=PLRx0vPvlEmdDySO3wDqMYGKMVH4Qa4QhR
코드에 대한 보다 자세한 정리는 본인의 블로그 https://terianp.tistory.com/ 에 올려두었습니다.
-
JFrame 을 이용한 GUI 구현 및 JFRAME 의 다양한 메서드 사용
-
GETTER/SETTER 과 생성자를 이용한 코드 구현
-
자바에서 MP3 파일 재생을 위한 javazoom:jlayer:1.0.1 라이브러리 사용
-
게임 화면, 버튼, 배경 사진, 음악 등을 코드에 넣어서 불러오고, JAR 로 BUILD 하여 실행 가능하도록 구현
-
ArrayList 를 사용하여 각 배열에 Track 에 해당하는 객체를 넣어두고, index 번호에 따라서 음악을 고르고 해당 음악에 맞는 정보 - 타이틀 이미지, 음악 이미지, 해당 음악 하이라이트 - 가 나오도록 설정
-
다양한 부분에서 ArrayList 배열을 사용함
- 다음 음악으로 넘길 때
- 노트 만든 후 불러올 때 등등
-
마우스에 행동에 따른 이벤트 구현 - 마우스를 위에 올렸을 때, 마우스로 클릭했을 때 -
-
jar 패키징 시에도 동작 가능하도록 InputStream 활용
-
JDBC 를 사용하여 로그인하고, 로그인 후 해당 사용자로 음악 게임 종료 시 점수를 저장할 수 있도록 함
-
THREAD 를 사용하여 각 기능들을 Thread 를 통해서 개별적으로 구현 및 실행
-
시작 화면에서 intro 음악 재생
-
시작 화면에서 '시작하기', '종료하기',왼쪽 위 종료 버튼 구현
-
시작하기 버튼을 눌렀을 때 음악 선택 화면으로 이동
-
음악 선택 화면 - 이하 메인 화면 - 에 음악을 2개를 놓고 왼쪽 버튼과 오른쪽 버튼을 눌러 음악을 선택할 수 있도록 함
-
음악 선택 시 해당 음악의 하이라이트 부분이 나오도록 함
-
음악 선택 후 게임 화면으로 이동 및 게임에 맞는 배경, 출력
-
키보드 눌렀을 때 해당 키보드 이벤트 출력, 키보드별 음악 재생
-
노트 판정 기능 : 노트 판정 시 이미지, 판정 별 이미지 등
-
jar 로 패키징 후 동작 확인 => jre 없이 단독 실행은 불가능
-
게임 점수 및 콤보 표시
- 게임 화면 아래 표시 => Graphic.drawImage
- 오른쪽에 콤보 표시 => Graphic.drawString
-
게임 플레이 모드, 노트 찍기 모드 개별 구현
- 노트 찍기 모드 : noteMaker = true 로 둘 시 resources/readNote/ 안에 '노래명'_'난이도'.txt 로 파일 생성. 파일에는 노트를 찍는 시간 + 찍은 노트(버튼)이 저장됨
- 게임 플레이 모드 : 노트 찍기 모드에서 내가 찍어둔 노트를 그대로 읽어와서 게임 노트를 출력해줌 => ArrayList 및 InputStream in , BufferedReader, StringTokenizer 사용
-
JDBC Mysql 연동
- JDBC 를 이용해서 MySQL과 연동하여 로그인 후 게임 이용이 가능하도록 설정
- MySQL 에서 연동되는 DB는 MyWeb 과 동일한 DB
-
URL 객체와 Image 를 사용하여 인트로 배경화면을 gif 로 구현
-
음악 종료 시 현재 점수 및 현재 콤보 수 출력
-
음악 종료 시 로그인한 사용자로 점수 및 콤보 저장
-
게임 별 SCORE BOARD 출력 : 점수 상위 5명 출력
-
exe 파일로 jre 없이 단독 실행 가능하도록 => 이건 불가능할듯...
-
DB 연결을 통해 My web 과 연동 후 로그인하여 게임 플레이 가능하도록
-
코드 리펙토링
- 해당 코드에는 /resources/game_music 및 menu_music , game_image 부분이 빠져있습니다. 이는 저작권에 맞는 음악을 사용한게 아니라 제가 좋아하는 노래들로 다운받아서 넣어두었기 때문입니다.
- 이 때문에 해당 코드를 사용하신다면, game_music 및 menu_music game_image 를 만드시고 해당 디렉토리 안에 음악과 음악별 이미지를 넣어주셔야 합니다.
- 음악은 반드시 mp3!!