728x90
🍟 개별 게임 곡 재생하기
- 게임 클릭했을 때 해당 게임 음악 재생
- 게임 클래스 다루기
🍿 참고:
https://www.youtube.com/watch?v=f3DYEPrAlWc&list=PLRx0vPvlEmdDySO3wDqMYGKMVH4Qa4QhR&index=13

Main.java
package dynamic_beat_13;
public class Main {
public static final int SCREEN_WIDTH= 1280;
public static final int SCREEN_HEIGHT = 720;
public static final int NOTE_SPEED = 7;
public static final int SLEEP_TIME = 10;
public static void main(String[] args) {
new DynamicBeat();
}
}
Game.java
package dynamic_beat_13;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.util.ArrayList;
import javax.swing.ImageIcon;
public class Game extends Thread {
private Image noteRouteLineImage = new ImageIcon(Main.class.getResource("../images/noteRouteLine.png"))
.getImage();
private Image judgementLineImage = new ImageIcon(Main.class.getResource("../images/judgementLine.png"))
.getImage();
private Image gameInfoImage = new ImageIcon(Main.class.getResource("../images/gameInfo.png"))
.getImage();
private Image noteRouteSImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
private Image noteRouteDImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
private Image noteRouteFImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
private Image noteRouteSpace1Image = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
private Image noteRouteSpace2Image = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
private Image noteRouteJImage = new ImageIcon(Main.class.getResource("../images/noteRoute.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();
private String titleName;
private String difficulty;
private String musicTitle;
private Music gameMusic;
ArrayList<Note> noteList = new ArrayList<Note>();
public Game(String titleName, String difficulty, String musicTitle) {
this.titleName = titleName;
this.difficulty = difficulty;
this.musicTitle = musicTitle;
gameMusic = new Music(this.musicTitle, false);
gameMusic.start();
dropNotes(titleName);
}
public void screenDraw(Graphics2D g) {
g.drawImage(noteRouteSImage, 228, 30, null);
g.drawImage(noteRouteDImage, 332, 30, null);
g.drawImage(noteRouteFImage, 436, 30, null);
g.drawImage(noteRouteSpace1Image, 540, 30, null);
g.drawImage(noteRouteSpace2Image, 640, 30, null);
g.drawImage(noteRouteJImage, 744, 30, null);
g.drawImage(noteRouteKImage, 848, 30, null);
g.drawImage(noteRouteLImage, 952, 30, null);
g.drawImage(noteRouteLineImage, 224, 30, null);
g.drawImage(noteRouteLineImage, 328, 30, null);
g.drawImage(noteRouteLineImage, 432, 30, null);
g.drawImage(noteRouteLineImage, 536, 30, null);
g.drawImage(noteRouteLineImage, 740, 30, null);
g.drawImage(noteRouteLineImage, 844, 30, null);
g.drawImage(noteRouteLineImage, 948, 30, null);
g.drawImage(noteRouteLineImage, 1052, 30, null);
g.drawImage(gameInfoImage, 0, 660, null);
g.drawImage(judgementLineImage, 0, 580, null);
for(int i = 0; i < noteList.size(); i++)
{
Note note = noteList.get(i);
note.screenDraw(g);
}
g.setColor(Color.white);
g.setRenderingHint( RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g.setColor(Color.WHITE);
g.setFont(new Font("Arial", Font.BOLD, 30));
g.drawString(titleName, 20, 702);
g.drawString(difficulty, 1190, 702);
g.setFont(new Font("Arial", Font.PLAIN, 26));
g.setColor(Color.DARK_GRAY);
g.drawString("S", 270, 609);
g.drawString("D", 374, 609);
g.drawString("F", 478, 609);
g.drawString("Space Bar", 580, 609);
g.drawString("J", 784, 609);
g.drawString("K", 889, 609);
g.drawString("L", 993, 609);
g.setColor(Color.LIGHT_GRAY);
g.setFont(new Font("Elephant", Font.BOLD, 30));
g.drawString("000000", 565, 702);
}
public void pressS() {
noteRouteSImage = new ImageIcon(Main.class.getResource("../images/noteRoutePressed.png")).getImage();
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();
}
public void releaseD() {
noteRouteDImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
}
public void pressF() {
noteRouteFImage = new ImageIcon(Main.class.getResource("../images/noteRoutePressed.png")).getImage();
new Music("drumSmall1.mp3", false).start();
}
public void releaseF() {
noteRouteFImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
}
public void pressSpace() {
noteRouteSpace1Image = new ImageIcon(Main.class.getResource("../images/noteRoutePressed.png")).getImage();
noteRouteSpace2Image = new ImageIcon(Main.class.getResource("../images/noteRoutePressed.png")).getImage();
new Music("drumBig1.mp3", false).start();
}
public void releaseSpace() {
noteRouteSpace1Image = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
noteRouteSpace2Image = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
}
public void pressJ() {
noteRouteJImage = new ImageIcon(Main.class.getResource("../images/noteRoutePressed.png")).getImage();
new Music("drumSmall1.mp3", false).start();
}
public void releaseJ() {
noteRouteJImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
}
public void pressK() {
noteRouteKImage = new ImageIcon(Main.class.getResource("../images/noteRoutePressed.png")).getImage();
new Music("drumSmall1.mp3", false).start();
}
public void releaseK() {
noteRouteKImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
}
public void pressL() {
noteRouteLImage = new ImageIcon(Main.class.getResource("../images/noteRoutePressed.png")).getImage();
new Music("drumSmall1.mp3", false).start();
}
public void releaseL() {
noteRouteLImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
}
@Override
public void run() {
}
public void close() {
gameMusic.close();
this.interrupt();
}
public void dropNotes(String titleName) {
Note note = new Note(228, "short");
note.start();
noteList.add(note);
}
}
Note.java
package dynamic_beat_13;
import java.awt.Graphics2D;
import java.awt.Image;
import javax.swing.ImageIcon;
public class Note extends Thread {
private Image noteBasicImage = new ImageIcon(Main.class.getResource("../images/noteBasic.png")).getImage();
private int x, y = 580 - 1000 / Main.SLEEP_TIME * Main.NOTE_SPEED;
private String noteType;
public Note(int x, String noteType) {
this.x = x;
this.noteType = noteType;
}
public void screenDraw(Graphics2D g) {
if(noteType.equals("short"))
{
g.drawImage(noteBasicImage, x, y, null);
}
else if(noteType.equals("long"))
{
g.drawImage(noteBasicImage, x, y, null);
g.drawImage(noteBasicImage, x + 100, y, null);
}
}
public void drop() {
y += Main.NOTE_SPEED;
}
@Override
public void run() {
try {
while (true) {
drop();
Thread.sleep(Main.SLEEP_TIME);
}
} catch(Exception e) {
System.err.println(e.getMessage());
}
}
}
728x90
'토이 프로젝트 > 자바 리듬게임 만들기' 카테고리의 다른 글
[project] 자바 리듬게임 만들기 16 (0) | 2023.03.22 |
---|---|
[project] 자바 리듬게임 만들기 12 (0) | 2023.03.13 |
[project] 자바 리듬게임 만들기 11 (0) | 2023.03.13 |
[project] 자바 리듬게임 만들기 10 (0) | 2023.03.13 |
[project] 자바 리듬게임 만들기 9 (0) | 2023.03.13 |