/java-game-DynamicMusic

Java 로 만드는 음악 게임

Primary LanguageJava

따라하면서 배우기

Java 리듬 게임 구현

재미있어 보이는 것들을 직접 따라하고 코드로 구현해보면서 공부하였습니다

해당 코드는 아래의 동빈나님의 youtube 영상을 보면서 만들었습니다. 좋은 영상 감사합니다. https://www.youtube.com/playlist?list=PLRx0vPvlEmdDySO3wDqMYGKMVH4Qa4QhR

코드에 대한 보다 자세한 정리는 본인의 블로그 https://terianp.tistory.com/ 에 올려두었습니다.

아래와 같은 부분을 공부하였습니다

  1. JFrame 을 이용한 GUI 구현 및 JFRAME 의 다양한 메서드 사용

  2. GETTER/SETTER 과 생성자를 이용한 코드 구현

  3. 자바에서 MP3 파일 재생을 위한 javazoom:jlayer:1.0.1 라이브러리 사용

  4. 게임 화면, 버튼, 배경 사진, 음악 등을 코드에 넣어서 불러오고, JAR 로 BUILD 하여 실행 가능하도록 구현

  5. ArrayList 를 사용하여 각 배열에 Track 에 해당하는 객체를 넣어두고, index 번호에 따라서 음악을 고르고 해당 음악에 맞는 정보 - 타이틀 이미지, 음악 이미지, 해당 음악 하이라이트 - 가 나오도록 설정

  6. 다양한 부분에서 ArrayList 배열을 사용함

    • 다음 음악으로 넘길 때
    • 노트 만든 후 불러올 때 등등
  7. 마우스에 행동에 따른 이벤트 구현 - 마우스를 위에 올렸을 때, 마우스로 클릭했을 때 -

  8. jar 패키징 시에도 동작 가능하도록 InputStream 활용

  9. JDBC 를 사용하여 로그인하고, 로그인 후 해당 사용자로 음악 게임 종료 시 점수를 저장할 수 있도록 함

  10. THREAD 를 사용하여 각 기능들을 Thread 를 통해서 개별적으로 구현 및 실행

진행 상황

  1. 시작 화면에서 intro 음악 재생

  2. 시작 화면에서 '시작하기', '종료하기',왼쪽 위 종료 버튼 구현

  3. 시작하기 버튼을 눌렀을 때 음악 선택 화면으로 이동

  4. 음악 선택 화면 - 이하 메인 화면 - 에 음악을 2개를 놓고 왼쪽 버튼과 오른쪽 버튼을 눌러 음악을 선택할 수 있도록 함

  5. 음악 선택 시 해당 음악의 하이라이트 부분이 나오도록 함

  6. 음악 선택 후 게임 화면으로 이동 및 게임에 맞는 배경, 출력

  7. 키보드 눌렀을 때 해당 키보드 이벤트 출력, 키보드별 음악 재생

  8. 노트 판정 기능 : 노트 판정 시 이미지, 판정 별 이미지 등

  9. jar 로 패키징 후 동작 확인 => jre 없이 단독 실행은 불가능

  10. 게임 점수 및 콤보 표시

    • 게임 화면 아래 표시 => Graphic.drawImage
    • 오른쪽에 콤보 표시 => Graphic.drawString
  11. 게임 플레이 모드, 노트 찍기 모드 개별 구현

    • 노트 찍기 모드 : noteMaker = true 로 둘 시 resources/readNote/ 안에 '노래명'_'난이도'.txt 로 파일 생성. 파일에는 노트를 찍는 시간 + 찍은 노트(버튼)이 저장됨
    • 게임 플레이 모드 : 노트 찍기 모드에서 내가 찍어둔 노트를 그대로 읽어와서 게임 노트를 출력해줌 => ArrayList 및 InputStream in , BufferedReader, StringTokenizer 사용
  12. JDBC Mysql 연동

    • JDBC 를 이용해서 MySQL과 연동하여 로그인 후 게임 이용이 가능하도록 설정
    • MySQL 에서 연동되는 DB는 MyWeb 과 동일한 DB
  13. URL 객체와 Image 를 사용하여 인트로 배경화면을 gif 로 구현

  14. 음악 종료 시 현재 점수 및 현재 콤보 수 출력

  15. 음악 종료 시 로그인한 사용자로 점수 및 콤보 저장

  16. 게임 별 SCORE BOARD 출력 : 점수 상위 5명 출력

앞으로의 목표 - 장기

  1. exe 파일로 jre 없이 단독 실행 가능하도록 => 이건 불가능할듯...

  2. DB 연결을 통해 My web 과 연동 후 로그인하여 게임 플레이 가능하도록

  3. 코드 리펙토링

주의점

  • 해당 코드에는 /resources/game_music 및 menu_music , game_image 부분이 빠져있습니다. 이는 저작권에 맞는 음악을 사용한게 아니라 제가 좋아하는 노래들로 다운받아서 넣어두었기 때문입니다.
  • 이 때문에 해당 코드를 사용하신다면, game_music 및 menu_music game_image 를 만드시고 해당 디렉토리 안에 음악과 음악별 이미지를 넣어주셔야 합니다.
  • 음악은 반드시 mp3!!