728x90
🍟 곡 선택 기능 구현
- 버튼 클릭시 음악과 사진 변경
🍿 참고: https://www.youtube.com/watch?v=f3DYEPrAlWc&list=PLRx0vPvlEmdDySO3wDqMYGKMVH4Qa4QhR&index=7
DynamicBeat.java
package dynamic_beat_7;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.util.ArrayList;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class DynamicBeat extends JFrame {
private Image screenImage;
private Graphics screenGraphic;
private ImageIcon exitButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/exitButtonEntered.png"));
private ImageIcon exitButtonBasicImage = new ImageIcon(Main.class.getResource("../images/exitButtonBasic.png"));
private ImageIcon startButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/startButtonEntered.png"));
private ImageIcon startButtonBasicImage = new ImageIcon(Main.class.getResource("../images/startButtonBasic.png"));
private ImageIcon quitButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/quitButtonEntered.png"));
private ImageIcon quitButtonBasicImage = new ImageIcon(Main.class.getResource("../images/quitButtonBasic.png"));
private ImageIcon leftButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/leftButtonEntered.png"));
private ImageIcon leftButtonBasicImage = new ImageIcon(Main.class.getResource("../images/leftButtonBasic.png"));
private ImageIcon rightButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/rightButtonEntered.png"));
private ImageIcon rightButtonBasicImage = new ImageIcon(Main.class.getResource("../images/rightButtonBasic.png"));
private Image background = new ImageIcon(Main.class.getResource("../images/introBackground.jpg")).getImage();
private JLabel menuBar = new JLabel(new ImageIcon(Main.class.getResource("../images/menuBar.png")));
private JButton exitButton = new JButton(exitButtonBasicImage);
private JButton startButton = new JButton(startButtonBasicImage);
private JButton quitButton = new JButton(quitButtonBasicImage);
private JButton leftButton = new JButton(leftButtonBasicImage);
private JButton rightButton = new JButton(rightButtonBasicImage);
private int mouseX, mouseY;
private boolean isMainScreen = false;
ArrayList<Track> trackList = new ArrayList<Track>();
private Image titleImage;
private Image selectedImage;
private Music selectedMusic;
private int nowSelected = 0;
public DynamicBeat() {
setUndecorated(true);
setTitle("Dynamic Beat");
setSize(Main.SCREEN_WIDTH, Main.SCREEN_HEIGHT);
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setBackground(new Color(0, 0, 0, 0));
setLayout(null);
Music introMusic = new Music("Walking.mp3", true);
introMusic.start();
trackList.add(new Track("Mighty Love Title Image.png", "Mighty Love Start Image.png",
"Mighty Love Game Image.jpg", "Mighty Love Selected.mp3", "Joakim Karud - Mighty Love.mp3"));
trackList.add(new Track("Wild Flower Title Image.png", "Wild Flower Start Image.png",
"Wild Flower Game Image.jpg", "Wild Flower Selected.mp3", "Wild Flower - Joakim Karud.mp3"));
trackList.add(new Track("Energy Title Image.png", "Energy Start Image.png",
"Energy Game Image.png", "Energy Selected.mp3", "Bensound - Energy.mp3"));
exitButton.setBounds(1245, 0, 30, 30);
exitButton.setBorderPainted(false);
exitButton.setContentAreaFilled(false);
exitButton.setFocusPainted(false);
exitButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
exitButton.setIcon(exitButtonEnteredImage);
exitButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
Music buttonEnteredMusic = new Music("buttonEnteredMusic.mp3", false);
buttonEnteredMusic.start();
}
@Override
public void mouseExited(MouseEvent e) {
exitButton.setIcon(exitButtonBasicImage);
exitButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
@Override
public void mousePressed(MouseEvent e) {
Music buttonEnteredMusic = new Music("buttonPressedMusic.mp3", false);
buttonEnteredMusic.start();
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
System.exit(0);
}
});
add(exitButton);
startButton.setBounds(40, 200, 400, 100);
startButton.setBorderPainted(false);
startButton.setContentAreaFilled(false);
startButton.setFocusPainted(false);
startButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
startButton.setIcon(startButtonEnteredImage);
startButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
Music buttonEnteredMusic = new Music("buttonEnteredMusic.mp3", false);
buttonEnteredMusic.start();
}
@Override
public void mouseExited(MouseEvent e) {
startButton.setIcon(startButtonBasicImage);
startButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
@Override
public void mousePressed(MouseEvent e) {
Music buttonEnteredMusic = new Music("buttonPressedMusic.mp3", false);
buttonEnteredMusic.start();
introMusic.close();
selectTrack(0);
startButton.setVisible(false);
quitButton.setVisible(false);
leftButton.setVisible(true);
rightButton.setVisible(true);
background = new ImageIcon(Main.class.getResource("../images/introBackground.jpg")).getImage();
isMainScreen = true;
}
});
add(startButton);
quitButton.setBounds(40, 330, 400, 100);
quitButton.setBorderPainted(false);
quitButton.setContentAreaFilled(false);
quitButton.setFocusPainted(false);
quitButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
quitButton.setIcon(quitButtonEnteredImage);
quitButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
Music buttonEnteredMusic = new Music("buttonEnteredMusic.mp3", false);
buttonEnteredMusic.start();
}
@Override
public void mouseExited(MouseEvent e) {
quitButton.setIcon(quitButtonBasicImage);
quitButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
@Override
public void mousePressed(MouseEvent e) {
Music buttonEnteredMusic = new Music("buttonPressedMusic.mp3", false);
buttonEnteredMusic.start();
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
System.exit(0);
}
});
add(quitButton);
leftButton.setVisible(false);
leftButton.setBounds(140, 310, 60, 60);
leftButton.setBorderPainted(false);
leftButton.setContentAreaFilled(false);
leftButton.setFocusPainted(false);
leftButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
leftButton.setIcon(leftButtonEnteredImage);
leftButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
Music buttonEnteredMusic = new Music("buttonEnteredMusic.mp3", false);
buttonEnteredMusic.start();
}
@Override
public void mouseExited(MouseEvent e) {
leftButton.setIcon(leftButtonBasicImage);
leftButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
@Override
public void mousePressed(MouseEvent e) {
Music buttonEnteredMusic = new Music("buttonPressedMusic.mp3", false);
buttonEnteredMusic.start();
selectLeft();
}
});
add(leftButton);
rightButton.setVisible(false);
rightButton.setBounds(1080, 310, 60, 60);
rightButton.setBorderPainted(false);
rightButton.setContentAreaFilled(false);
rightButton.setFocusPainted(false);
rightButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
rightButton.setIcon(rightButtonEnteredImage);
rightButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
Music buttonEnteredMusic = new Music("buttonEnteredMusic.mp3", false);
buttonEnteredMusic.start();
}
@Override
public void mouseExited(MouseEvent e) {
rightButton.setIcon(rightButtonBasicImage);
rightButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
@Override
public void mousePressed(MouseEvent e) {
Music buttonEnteredMusic = new Music("buttonPressedMusic.mp3", false);
buttonEnteredMusic.start();
selectRight();
}
});
add(rightButton);
menuBar.setBounds(0, 0, 1280, 30);
menuBar.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
mouseX = e.getX();
mouseY = e.getY();
}
});
menuBar.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
int x = e.getXOnScreen();
int y = e.getYOnScreen();
setLocation(x - mouseX, y - mouseY);
}
});
add(menuBar);
}
public void paint(Graphics g) {
screenImage = createImage(Main.SCREEN_WIDTH, Main.SCREEN_HEIGHT);
screenGraphic = screenImage.getGraphics();
screenDraw(screenGraphic);
g.drawImage(screenImage, 0, 0, null);
}
public void screenDraw(Graphics g) {
g.drawImage(background, 0, 0, null);
if(isMainScreen)
{
g.drawImage(selectedImage, 340, 100, null);
g.drawImage(titleImage, 340, 70, null);
}
paintComponents(g);
this.repaint();
}
public void selectTrack(int newSelected) {
if(selectedMusic != null)
selectedMusic.close();
titleImage = new ImageIcon(Main.class.getResource("../images/" + trackList.get(newSelected).getTitleImage())).getImage();
selectedImage = new ImageIcon(Main.class.getResource("../images/" + trackList.get(newSelected).getStartImage())).getImage();
selectedMusic = new Music(trackList.get(newSelected).getStartMusic(), true);
selectedMusic.start();
}
public void selectLeft() {
if(nowSelected == 0)
nowSelected = trackList.size() -1;
else
nowSelected--;
selectTrack(nowSelected);
}
public void selectRight() {
if(nowSelected == trackList.size() -1)
nowSelected = 0;
else
nowSelected++;
selectTrack(nowSelected);
}
}
Track.java
package dynamic_beat_7;
public class Track {
private String titleImage; // 제목 부분 이미지
private String startImage; // 게임 선택 창 표지 이미지
private String gameImage; // 해당 곡을 실행했을 때 표지 이미지
private String startMusic; // 게임 선택 창 음악
private String gmaeMusic; // 해당 곡을 실행했을 때 음악
public String getTitleImage() {
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 getGmaeMusic() {
return gmaeMusic;
}
public void setGmaeMusic(String gmaeMusic) {
this.gmaeMusic = gmaeMusic;
}
public Track(String titleImage, String startImage, String gameImage, String startMusic, String gmaeMusic) {
super();
this.titleImage = titleImage;
this.startImage = startImage;
this.gameImage = gameImage;
this.startMusic = startMusic;
this.gmaeMusic = gmaeMusic;
}
}
728x90
'토이 프로젝트 > 자바 리듬게임 만들기' 카테고리의 다른 글
[project] 자바 리듬게임 만들기 9 (0) | 2023.03.13 |
---|---|
[project] 자바 리듬게임 만들기 8 (0) | 2023.03.09 |
[projoect] 자바 리듬게임 만들기 6 (0) | 2023.03.08 |
[projoect] 자바 리듬게임 만들기 5 (0) | 2023.03.08 |
[projoect] 자바 리듬게임 만들기 4 (0) | 2023.03.08 |