文章目录
一、项目效果演示
1.1 游戏主界面
1.2 音乐选择界面
1.3 游戏界面
二、项目结构
2.1 src
2.2 images
2.3 Mstw
2.4 music
三、Code
3.1 Main.java
package Mstw;
//用来执行整个程序的主类
public class Main {
public static final int screen_width = 1920; //设置宽度
public static final int screen_height = 1080; //设置高度
public static final int sleep_time = 10; //设置下落间隔时间
public static final int reach_time = 2; //用来调整的时间
public static int note_speed = 3; //设置方块下落速度
public static int scout; //游戏中的得分数
//执行整个程序的主函数
public static void main(String[] args) {
new Mstw();
}
}
3.2 Beat.java
package Mstw;
public class Beat {
private int time;
private String noteName;
public int getTime(){
return time;
}
public void setTime(int time){
this.time = time;
}
public String getNoteName(){
return noteName;
}
public void setNoteName(String noteName){
this.noteName = noteName;
}
public Beat(int time, String noteName){
super();
this.time = time;
this.noteName = noteName;
}
}
3.3 Game.java
package Mstw;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
public class Game extends Thread {
private Image gameInfoImage = new ImageIcon(Main.class.getResource("../images/gameInfo.png")).getImage();
private Image judgementLineImage = new ImageIcon(Main.class.getResource("../images/judgementLine.png")).getImage();
private Image noteRouteLineImage = new ImageIcon(Main.class.getResource("../images/noteRouteLine.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 noteRouteSpaceImage = 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 Image blueFlareImage;
private Image judgeImage;
private String titleName; //歌曲名称
private String difficulty; //难度
private String musicTitle; //歌曲MP3
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);
}
public void screenDraw(Graphics2D g) {
g.drawImage(gameInfoImage, 0, 1020, null);
g.drawImage(judgementLineImage, 0, 920, null); //方块判定界面
//方块下落路径和间隙
g.drawImage(noteRouteLineImage, 419, 0, null);
g.drawImage(noteRouteSImage, 423, 0, null);
g.drawImage(noteRouteLineImage, 573, 0, null);
g.drawImage(noteRouteDImage, 577, 0, null);
g.drawImage(noteRouteLineImage, 727, 0, null);
g.drawImage(noteRouteFImage, 731, 0, null);
g.drawImage(noteRouteLineImage, 881, 0, null);
g.drawImage(noteRouteSpaceImage, 885, 0, null);
g.drawImage(noteRouteLineImage, 1035, 0, null);
g.drawImage(noteRouteJImage, 1039, 0, null);
g.drawImage(noteRouteLineImage, 1189, 0, null);
g.drawImage(noteRouteKImage, 1193, 0, null);
g.drawImage(noteRouteLineImage, 1343, 0, null);
g.drawImage(noteRouteLImage, 1347, 0, null);
g.drawImage(noteRouteLineImage, 1497, 0, null);
for (int i = 0; i < noteList.size(); i++) {
Note note = noteList.get(i);
if (note.getY() > 960){
judgeImage = new ImageIcon(Main.class.getResource("../images/judgeMiss.png")).getImage();
}
if (!note.isProceeded()){
noteList.remove(i);
i--;
}
else {
note.screenDraw(g);
}
}
//设置白色字体
g.setColor(Color.white);
//让字体平滑
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g.setFont(new Font("Arial", Font.BOLD, 30));
g.drawString(titleName, 30, 1065);
g.drawString(difficulty, 1800, 1065);
//设置字母位置和颜色
g.setFont(new Font("Arial", Font.PLAIN, 30));
g.setColor(Color.GREEN);
g.drawString("S", 498, 950);
g.drawString("D", 652, 950);
g.drawString("F", 806, 950);
g.drawString("Space", 920, 950);
g.drawString("J", 1110, 950);
g.drawString("K", 1268, 950);
g.drawString("L", 1422, 950);
g.setColor(Color.LIGHT_GRAY);
g.setFont(new Font("Elephant", Font.BOLD, 30));
//显示当前得分
g.drawString(" "+Main.scout, 920, 1065);
if(Main.scout >= 1000){
Main.note_speed = 6;
}
g.drawImage(blueFlareImage, 360, 500, null);
g.drawImage(judgeImage, 780, 730, null);
}
//按下键盘上相应键的行为的函数,按下和松开
//S
public void pressS() {
judge("S");
noteRouteSImage = new ImageIcon(Main.class.getResource("../images/noteRoutePressed.png")).getImage();
new Music("PressedKeyboardMusic.mp3", false).start();
}
public void releaseS() {
noteRouteSImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
}
//D
public void pressD() {
judge("D");
noteRouteDImage = new ImageIcon(Main.class.getResource("../images/noteRoutePressed.png")).getImage();
new Music("PressedKeyboardMusic.mp3", false).start();
}
public void releaseD() {
noteRouteDImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
}
//F
public void pressF() {
judge("F");
noteRouteFImage = new ImageIcon(Main.class.getResource("../images/noteRoutePressed.png")).getImage();
new Music("PressedKeyboardMusic.mp3", false).start();
}
public void releaseF() {
noteRouteFImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
}
//Space
public void pressSpace() {
judge("Space");
noteRouteSpaceImage = new ImageIcon(Main.class.getResource("../images/noteRoutePressed.png")).getImage();
new Music("PressedKeyboardMusic.mp3", false).start();
}
public void releaseSpace() {
noteRouteSpaceImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
}
//J
public void pressJ() {
judge("J");
noteRouteJImage = new ImageIcon(Main.class.getResource("../images/noteRoutePressed.png")).getImage();
new Music("PressedKeyboardMusic.mp3", false).start();
}
public void releaseJ() {
noteRouteJImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
}
//K
public void pressK() {
judge("K");
noteRouteKImage = new ImageIcon(Main.class.getResource("../images/noteRoutePressed.png")).getImage();
new Music("PressedKeyboardMusic.mp3", false).start();
}
public void releaseK() {
noteRouteKImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
}
//L
public void pressL() {
judge("L");
noteRouteLImage = new ImageIcon(Main.class.getResource("../images/noteRoutePressed.png")).getImage();
new Music("PressedKeyboardMusic.mp3", false).start();
}
public void releaseL() {
noteRouteLImage = new ImageIcon(Main.class.getResource("../images/noteRoute.png")).getImage();
}
@Override
public void run() {
dropNotes(this.titleName);
}
public void close() {
gameMusic.close();
this.interrupt();
}
//下落方块
public void dropNotes(String titleName) {
// noteList.add(new Note(425, 600));
// noteList.add(new Note(579, 555));
// noteList.add(new Note(733, 500));
// noteList.add(new Note(887, 340));
// noteList.add(new Note(1041, 480));
// noteList.add(new Note(1195, 650));
// noteList.add(new Note(1349, 340));
Beat[] beats = null;
//根据选择的歌曲和难度制定节拍
if (titleName.equals("Celebrate - Joakim Karud") && difficulty.equals("Easy")){
int startTime = 2750 - Main.reach_time * 1000; //设置起始时间
int gap = 150; //用来制定节拍的间隔
beats = new Beat[]{
//节拍学习过程
new Beat(startTime, "S"),
new Beat(startTime + gap * 2, "D"),
new Beat(startTime + gap * 4, "S"),
new Beat(startTime + gap * 6, "D"),
new Beat(startTime + gap * 8, "S"),
new Beat(startTime + gap * 10, "D"),
new Beat(startTime + gap * 12 - 80, "S"),
new Beat(startTime + gap * 14 - 130, "D"),
new Beat(startTime + gap * 15, "F"),
new Beat(startTime + gap * 18, "J"),
new Beat(startTime + gap * 20 - 80, "K"),
new Beat(startTime + gap * 22 - 130, "L"),
new Beat(startTime + gap * 23, "J"),
new Beat(startTime + gap * 24, "K"),
new Beat(startTime + gap * 25, "J"),
new Beat(startTime + gap * 26, "K"),
new Beat(startTime + gap * 27, "L"),
new Beat(startTime + gap * 28, "Space"),
// new Beat(startTime + gap * 36, "D"),
// new Beat(startTime + gap * 38, "S"),
// new Beat(startTime + gap * 40, "D"),
// new Beat(startTime + gap * 42, "S"),
// new Beat(startTime + gap * 44, "D"),
// new Beat(startTime + gap * 46, "S"),
// new Beat(startTime + gap * 48, "D"),
// new Beat(startTime + gap * 50, "F"),
// new Beat(startTime + gap * 52, "J"),
// new Beat(startTime + gap * 54, "K"),
// new Beat(startTime + gap * 56, "L"),
// new Beat(startTime + gap * 58, "J"),
// new Beat(startTime + gap * 60, "K"),
// new Beat(startTime + gap * 62, "J"),
// new Beat(startTime + gap * 64, "K"),
// new Beat(startTime + gap * 66, "L"),
// new Beat(startTime + gap * 68, "Space"),
// new Beat(startTime + gap * 70, "D"),
// new Beat(startTime + gap * 72, "S"),
// new Beat(startTime + gap * 74, "D"),
// new Beat(startTime + gap * 76, "S"),
// new Beat(startTime + gap * 78, "D"),
// new Beat(startTime + gap * 80, "S"),
// new Beat(startTime + gap * 82, "D"),
// new Beat(startTime + gap * 84, "F"),
// new Beat(startTime + gap * 86, "J"),
new Beat(startTime + gap * 88, "S"),
new Beat(startTime + gap * 90, "D"),
new Beat(startTime + gap * 92, "S"),
new Beat(startTime + gap * 94, "D"),
new Beat(startTime + gap * 96, "J"),
new Beat(startTime + gap * 98, "K"),
new Beat(startTime + gap * 100, "J"),
new Beat(startTime + gap * 102, "K"),
new Beat(startTime + gap * 104, "D"),
new Beat(startTime + gap * 106, "F"),
new Beat(startTime + gap * 108, "L"),
new Beat(startTime + gap * 110, "Space"),
new Beat(startTime + gap * 112, "S"),
new Beat(startTime + gap * 114, "J"),
new Beat(startTime + gap * 116, "K"),
new Beat(startTime + gap * 118, "L"),
new Beat(startTime + gap * 120, "J"),
new Beat(startTime + gap * 122, "K"),
new Beat(startTime + gap * 124, "J"),
new Beat(startTime + gap * 126, "K"),
new Beat(startTime + gap * 128, "L"),
new Beat(startTime + gap * 130, "Space"),
new Beat(startTime + gap * 132, "D"),
new Beat(startTime + gap * 134, "S"),
new Beat(startTime + gap * 136, "D"),
new Beat(startTime + gap * 138, "S"),
new Beat(startTime + gap * 140, "D"),
new Beat(startTime + gap * 142, "S"),
new Beat(startTime + gap * 144, "K"),
new Beat(startTime + gap * 146, "L"),
new Beat(startTime + gap * 148, "J"),
new Beat(startTime + gap * 150, "K"),
new Beat(startTime + gap * 152, "J"),
new Beat(startTime + gap * 154, "K"),
new Beat(startTime + gap * 156, "L"),
new Beat(startTime + gap * 158, "Space"),
new Beat(startTime + gap * 160, "S"),
new Beat(startTime + gap * 162, "D"),
new Beat(startTime + gap * 164, "F"),
new Beat(startTime + gap * 166, "J"),
new Beat(startTime + gap * 168, "K"),
new Beat(startTime + gap * 170, "L"),
new Beat(startTime + gap * 172, "S"),
new Beat(startTime + gap * 174, "D"),
new Beat(startTime + gap * 176, "S"),
new Beat(startTime + gap * 178, "J"),
new Beat(startTime + gap * 180, "K"),
new Beat(startTime + gap * 182, "J"),
new Beat(startTime + gap * 184, "D"),
new Beat(startTime + gap * 186, "F"),
new Beat(startTime + gap * 188, "D"),
new Beat(startTime + gap * 190, "K"),
new Beat(startTime + gap * 192, "L"),
new Beat(startTime + gap * 194, "K"),
new Beat(startTime + gap * 196, "Space"),
new Beat(startTime + gap * 198, "S"),
new Beat(startTime + gap * 200, "D"),
new Beat(startTime + gap * 202, "F"),
new Beat(startTime + gap * 204, "D"),
new Beat(startTime + gap * 206, "S"),
new Beat(startTime + gap * 208, "K"),
new Beat(startTime + gap * 210, "L"),
new Beat(startTime + gap * 212, "J"),
new Beat(startTime + gap * 214, "K"),
new Beat(startTime + gap * 216, "J"),
new Beat(startTime + gap * 218, "K"),
new Beat(startTime + gap * 220, "L"),
new Beat(startTime + gap * 222, "Space"),
new Beat(startTime + gap * 224, "D"),
new Beat(startTime + gap * 226, "S"),
new Beat(startTime + gap * 228, "D"),
new Beat(startTime + gap * 230, "S"),
new Beat(startTime + gap * 232, "D"),
new Beat(startTime + gap * 234, "S"),
new Beat(startTime + gap * 236, "K"),
new Beat(startTime + gap * 238, "L"),
new Beat(startTime + gap * 240, "J"),
new Beat(startTime + gap * 242, "K"),
new Beat(startTime + gap * 244, "J"),
new Beat(startTime + gap * 246, "K"),
new Beat(startTime + gap * 248, "L"),
new Beat(startTime + gap * 250, "Space"),
new Beat(startTime + gap * 252, "S"),
new Beat(startTime + gap * 254, "D"),
new Beat(startTime + gap * 256, "S"),
new Beat(startTime + gap * 258, "J"),
new Beat(startTime + gap * 260, "K"),
new Beat(startTime + gap * 262, "J"),
new Beat(startTime + gap * 264, "Space"),
new Beat(startTime + gap * 266, "S"),
new Beat(startTime + gap * 268, "D"),
new Beat(startTime + gap * 270, "S"),
new Beat(startTime + gap * 272, "D"),
new Beat(startTime + gap * 274, "S"),
new Beat(startTime + gap * 276, "D"),
new Beat(startTime + gap * 278 - 80, "S"),
new Beat(startTime + gap * 280 - 130, "D"),
new Beat(startTime + gap * 281, "F"),
new Beat(startTime + gap * 284, "J"),
new Beat(startTime + gap * 286 - 80, "K"),
new Beat(startTime + gap * 288 - 130, "L"),
new Beat(startTime + gap * 289, "J"),
new Beat(startTime + gap * 290, "K"),
new Beat(startTime + gap * 291, "J"),
new Beat(startTime + gap * 292, "K"),
new Beat(startTime + gap * 293, "L"),
new Beat(startTime + gap * 294, "Space"),
new Beat(startTime + gap * 296, "D"),
new Beat(startTime + gap * 298, "S"),
new Beat(startTime + gap * 300, "K"),
new Beat(startTime + gap * 302, "L"),
new Beat(startTime + gap * 304, "J"),
new Beat(startTime + gap * 306, "K"),
new Beat(startTime + gap * 308, "J"),
new Beat(startTime + gap * 310, "K"),
new Beat(startTime + gap * 312, "L"),
new Beat(startTime + gap * 314, "Space"),
new Beat(startTime + gap * 316, "D"),
new Beat(startTime + gap * 318, "S"),
new Beat(startTime + gap * 320, "D"),
new Beat(startTime + gap * 322, "S"),
new Beat(startTime + gap * 324, "D"),
new Beat(startTime + gap * 326, "S"),
new Beat(startTime + gap * 328, "K"),
new Beat(startTime + gap * 330, "L"),
new Beat(startTime + gap * 332, "J"),
new Beat(startTime + gap * 334, "K"),
new Beat(startTime + gap * 336, "J"),
new Beat(startTime + gap * 338, "K"),
new Beat(startTime + gap * 340, "L"),
new Beat(startTime + gap * 342, "Space"),
new Beat(startTime + gap * 344, "S"),
new Beat(startTime + gap * 346, "D"),
new Beat(startTime + gap * 348, "S"),
new Beat(startTime + gap * 350, "J"),
new Beat(startTime + gap * 352, "K"),
new Beat(startTime + gap * 354, "J"),
new Beat(startTime + gap * 356, "Space"),
};
}
else if (titleName.equals("Celebrate - Joakim Karud") && difficulty.equals("Hard")){
int startTime = 2750 - Main.reach_time * 1000;
int gap = 125; //用来制定节拍的间隔
Main.note_speed = 4;
beats = new Beat[]{
//节拍学习过程
new Beat(startTime, "S"),
new Beat(startTime, "J"),
new Beat(startTime + gap * 2, "D"),
new Beat(startTime + gap * 2, "K"),
new Beat(startTime + gap * 4, "S"),
new Beat(startTime + gap * 4, "J"),
new Beat(startTime + gap * 6, "D"),
new Beat(startTime + gap * 6, "K"),
new Beat(startTime + gap * 8, "S"),
new Beat(startTime + gap * 8, "J"),
new Beat(startTime + gap * 10, "D"),
new Beat(startTime + gap * 10, "K"),
new Beat(startTime + gap * 12 - 80, "S"),
new Beat(startTime + gap * 12 - 80, "J"),
new Beat(startTime + gap * 14 - 130, "D"),
new Beat(startTime + gap * 14 - 130, "K"),
new Beat(startTime + gap * 15, "F"),
new Beat(startTime + gap * 15, "L"),
new Beat(startTime + gap * 18, "J"),
new Beat(startTime + gap * 18, "S"),
new Beat(startTime + gap * 20 - 80, "K"),
new Beat(startTime + gap * 20 - 80, "D"),
new Beat(startTime + gap * 22 - 130, "L"),
new Beat(startTime + gap * 22 - 130, "F"),
new Beat(startTime + gap * 23, "J"),
new Beat(startTime + gap * 23, "F"),
new Beat(startTime + gap * 24, "K"),
new Beat(startTime + gap * 24, "D"),
new Beat(startTime + gap * 25, "J"),
new Beat(startTime + gap * 25, "F"),
new Beat(startTime + gap * 26, "K"),
new Beat(startTime + gap * 26, "D"),
new Beat(startTime + gap * 27, "L"),
new Beat(startTime + gap * 27, "L"),
new Beat(startTime + gap * 28, "Space"),
new Beat(startTime + gap * 36, "D"),
new Beat(startTime + gap * 38, "S"),
new Beat(startTime + gap * 40, "D"),
new Beat(startTime + gap * 42, "S"),
new Beat(startTime + gap * 44, "D"),
new Beat(startTime + gap * 46, "S"),
new Beat(startTime + gap * 48, "D"),
new Beat(startTime + gap * 50, "F"),
new Beat(startTime + gap * 52, "J"),
new Beat(startTime + gap * 54, "K"),
new Beat(startTime + gap * 56, "L"),
new Beat(startTime + gap * 58, "J"),
new Beat(startTime + gap * 60, "K"),
new Beat(startTime + gap * 62, "J"),
new Beat(startTime + gap * 64, "K"),
new Beat(startTime + gap * 66, "L"),
new Beat(startTime + gap * 68, "Space"),
// new Beat(startTime + gap * 70, "D"),
// new Beat(startTime + gap * 72, "S"),
// new Beat(startTime + gap * 74, "D"),
// new Beat(startTime + gap * 76, "S"),
// new Beat(startTime + gap * 78, "D"),
// new Beat(startTime + gap * 80, "S"),
// new Beat(startTime + gap * 82, "D"),
// new Beat(startTime + gap * 84, "F"),
// new Beat(startTime + gap * 86, "J"),
new Beat(startTime + gap * 88, "S"),
new Beat(startTime + gap * 89, "D"),
new Beat(startTime + gap * 90, "S"),
new Beat(startTime + gap * 91, "D"),
new Beat(startTime + gap * 92, "J"),
new Beat(startTime + gap * 93, "K"),
new Beat(startTime + gap * 94, "J"),
new Beat(startTime + gap * 95, "K"),
new Beat(startTime + gap * 96, "D"),
new Beat(startTime + gap * 97, "F"),
new Beat(startTime + gap * 98, "L"),
new Beat(startTime + gap * 99, "Space"),
new Beat(startTime + gap * 100, "S"),
new Beat(startTime + gap * 101, "J"),
new Beat(startTime + gap * 102, "S"),
new Beat(startTime + gap * 103, "D"),
new Beat(startTime + gap * 104, "S"),
new Beat(startTime + gap * 105, "D"),
new Beat(startTime + gap * 106, "J"),
new Beat(startTime + gap * 107, "K"),
new Beat(startTime + gap * 108, "J"),
new Beat(startTime + gap * 109, "K"),
new Beat(startTime + gap * 110, "D"),
new Beat(startTime + gap * 111, "F"),
new Beat(startTime + gap * 112, "L"),
new Beat(startTime + gap * 114, "Space"),
new Beat(startTime + gap * 114, "F"),
new Beat(startTime + gap * 114, "J"),
new Beat(startTime + gap * 116, "K"),
new Beat(startTime + gap * 118, "L"),
new Beat(startTime + gap * 120, "J"),
new Beat(startTime + gap * 122, "K"),
new Beat(startTime + gap * 124, "J"),
new Beat(startTime + gap * 126, "K"),
new Beat(startTime + gap * 128, "L"),
new Beat(startTime + gap * 130, "Space"),
new Beat(startTime + gap * 132, "D"),
new Beat(startTime + gap * 132, "K"),
new Beat(startTime + gap * 134, "S"),
new Beat(startTime + gap * 134, "L"),
new Beat(startTime + gap * 136, "D"),
new Beat(startTime + gap * 136, "K"),
new Beat(startTime + gap * 138, "S"),
new Beat(startTime + gap * 138, "L"),
new Beat(startTime + gap * 140, "D"),
new Beat(startTime + gap * 140, "K"),
new Beat(startTime + gap * 142, "S"),
new Beat(startTime + gap * 142, "L"),
new Beat(startTime + gap * 144, "K"),
new Beat(startTime + gap * 144, "D"),
new Beat(startTime + gap * 146, "S"),
new Beat(startTime + gap * 146, "L"),
new Beat(startTime + gap * 148, "F"),
new Beat(startTime + gap * 148, "J"),
new Beat(startTime + gap * 150, "D"),
new Beat(startTime + gap * 150, "K"),
new Beat(startTime + gap * 152, "F"),
new Beat(startTime + gap * 152, "J"),
new Beat(startTime + gap * 154, "D"),
new Beat(startTime + gap * 154, "K"),
new Beat(startTime + gap * 156, "F"),
new Beat(startTime + gap * 156, "L"),
new Beat(startTime + gap * 158, "Space"),
new Beat(startTime + gap * 160, "S"),
new Beat(startTime + gap * 160, "L"),
new Beat(startTime + gap * 162, "D"),
new Beat(startTime + gap * 162, "K"),
new Beat(startTime + gap * 164, "F"),
new Beat(startTime + gap * 164, "J"),
new Beat(startTime + gap * 166, "J"),
new Beat(startTime + gap * 166, "F"),
new Beat(startTime + gap * 168, "K"),
new Beat(startTime + gap * 168, "D"),
new Beat(startTime + gap * 170, "L"),
new Beat(startTime + gap * 170, "S"),
new Beat(startTime + gap * 172, "S"),
new Beat(startTime + gap * 174, "D"),
new Beat(startTime + gap * 176, "S"),
new Beat(startTime + gap * 178, "J"),
new Beat(startTime + gap * 180, "K"),
new Beat(startTime + gap * 182, "J"),
new Beat(startTime + gap * 184, "D"),
new Beat(startTime + gap * 186, "F"),
new Beat(startTime + gap * 188, "D"),
new Beat(startTime + gap * 190, "K"),
new Beat(startTime + gap * 192, "L"),
new Beat(startTime + gap * 194, "K"),
new Beat(startTime + gap * 196, "Space"),
new Beat(startTime + gap * 196, "D"),
new Beat(startTime + gap * 196, "F"),
new Beat(startTime + gap * 196, "J"),
new Beat(startTime + gap * 196, "K"),
new Beat(startTime + gap * 198, "S"),
new Beat(startTime + gap * 200, "D"),
new Beat(startTime + gap * 202, "F"),
new Beat(startTime + gap * 204, "D"),
new Beat(startTime + gap * 206, "S"),
new Beat(startTime + gap * 208, "K"),
new Beat(startTime + gap * 210, "L"),
new Beat(startTime + gap * 212, "J"),
new Beat(startTime + gap * 214, "K"),
new Beat(startTime + gap * 216, "J"),
new Beat(startTime + gap * 218, "K"),
new Beat(startTime + gap * 220, "L"),
new Beat(startTime + gap * 222, "Space"),
new Beat(startTime + gap * 224, "D"),
new Beat(startTime + gap * 224, "K"),
new Beat(startTime + gap * 226, "S"),
new Beat(startTime + gap * 226, "L"),
new Beat(startTime + gap * 228, "D"),
new Beat(startTime + gap * 228, "K"),
new Beat(startTime + gap * 230, "S"),
new Beat(startTime + gap * 230, "L"),
new Beat(startTime + gap * 232, "D"),
new Beat(startTime + gap * 232, "K"),
new Beat(startTime + gap * 234, "S"),
new Beat(startTime + gap * 234, "L"),
new Beat(startTime + gap * 236, "K"),
new Beat(startTime + gap * 236, "D"),
new Beat(startTime + gap * 238, "L"),
new Beat(startTime + gap * 238, "S"),
new Beat(startTime + gap * 240, "J"),
new Beat(startTime + gap * 240, "F"),
new Beat(startTime + gap * 242, "K"),
new Beat(startTime + gap * 242, "D"),
new Beat(startTime + gap * 244, "J"),
new Beat(startTime + gap * 244, "F"),
new Beat(startTime + gap * 246, "K"),
new Beat(startTime + gap * 246, "D"),
new Beat(startTime + gap * 248, "L"),
new Beat(startTime + gap * 248, "F"),
new Beat(startTime + gap * 250, "Space"),
new Beat(startTime + gap * 252, "S"),
new Beat(startTime + gap * 254, "D"),
new Beat(startTime + gap * 256, "S"),
new Beat(startTime + gap * 258, "J"),
new Beat(startTime + gap * 260, "K"),
new Beat(startTime + gap * 262, "J"),
new Beat(startTime + gap * 264, "Space"),
new Beat(startTime + gap * 266, "S"),
new Beat(startTime + gap * 268, "D"),
new Beat(startTime + gap * 270, "S"),
new Beat(startTime + gap * 272, "D"),
new Beat(startTime + gap * 274, "S"),
new Beat(startTime + gap * 276, "D"),
new Beat(startTime + gap * 278 - 80, "S"),
new Beat(startTime + gap * 280 - 130, "D"),
new Beat(startTime + gap * 281, "F"),
new Beat(startTime + gap * 284, "J"),
new Beat(startTime + gap * 286 - 80, "K"),
new Beat(startTime + gap * 288 - 130, "L"),
new Beat(startTime + gap * 289, "J"),
new Beat(startTime + gap * 290, "K"),
new Beat(startTime + gap * 291, "J"),
new Beat(startTime + gap * 292, "K"),
new Beat(startTime + gap * 293, "L"),
new Beat(startTime + gap * 294, "Space"),
new Beat(startTime + gap * 296, "D"),
new Beat(startTime + gap * 298, "S"),
new Beat(startTime + gap * 300, "K"),
new Beat(startTime + gap * 302, "L"),
new Beat(startTime + gap * 304, "J"),
new Beat(startTime + gap * 306, "K"),
new Beat(startTime + gap * 308, "J"),
new Beat(startTime + gap * 310, "K"),
new Beat(startTime + gap * 312, "L"),
new Beat(startTime + gap * 314, "Space"),
new Beat(startTime + gap * 316, "D"),
new Beat(startTime + gap * 316, "K"),
new Beat(startTime + gap * 318, "S"),
new Beat(startTime + gap * 318, "L"),
new Beat(startTime + gap * 320, "D"),
new Beat(startTime + gap * 320, "K"),
new Beat(startTime + gap * 322, "S"),
new Beat(startTime + gap * 322, "L"),
new Beat(startTime + gap * 324, "D"),
new Beat(startTime + gap * 324, "K"),
new Beat(startTime + gap * 326, "S"),
new Beat(startTime + gap * 326, "L"),
new Beat(startTime + gap * 328, "K"),
new Beat(startTime + gap * 328, "D"),
new Beat(startTime + gap * 330, "L"),
new Beat(startTime + gap * 330, "S"),
new Beat(startTime + gap * 332, "J"),
new Beat(startTime + gap * 332, "F"),
new Beat(startTime + gap * 334, "K"),
new Beat(startTime + gap * 334, "D"),
new Beat(startTime + gap * 336, "J"),
new Beat(startTime + gap * 336, "F"),
new Beat(startTime + gap * 338, "K"),
new Beat(startTime + gap * 338, "D"),
new Beat(startTime + gap * 340, "L"),
new Beat(startTime + gap * 340, "S"),
new Beat(startTime + gap * 342, "Space"),
new Beat(startTime + gap * 344, "S"),
new Beat(startTime + gap * 346, "D"),
new Beat(startTime + gap * 348, "S"),
new Beat(startTime + gap * 350, "J"),
new Beat(startTime + gap * 352, "K"),
new Beat(startTime + gap * 354, "J"),
new Beat(startTime + gap * 356, "Space"),
new Beat(startTime + gap * 356, "S"),
new Beat(startTime + gap * 356, "D"),
new Beat(startTime + gap * 356, "F"),
new Beat(startTime + gap * 356, "J"),
new Beat(startTime + gap * 356, "K"),
new Beat(startTime + gap * 356, "L"),
};
}
else if (titleName.equals("Future Funk - Joakim Karud") && difficulty.equals("Easy")){
int startTime = 2750 - Main.reach_time * 1000; //设置起始时间
int gap = 150; //用来制定节拍的间隔
beats = new Beat[]{
//节拍学习过程
new Beat(startTime, "S"),
new Beat(startTime + gap * 2, "D"),
new Beat(startTime + gap * 4, "S"),
new Beat(startTime + gap * 6, "D"),
new Beat(startTime + gap * 8, "S"),
new Beat(startTime + gap * 10, "D"),
new Beat(startTime + gap * 12 - 80, "S"),
new Beat(startTime + gap * 14 - 130, "D"),
new Beat(startTime + gap * 15, "F"),
new Beat(startTime + gap * 18, "J"),
new Beat(startTime + gap * 20 - 80, "K"),
new Beat(startTime + gap * 22 - 130, "L"),
new Beat(startTime + gap * 23, "J"),
new Beat(startTime + gap * 24, "K"),
new Beat(startTime + gap * 25, "J"),
new Beat(startTime + gap * 26, "K"),
new Beat(startTime + gap * 27, "L"),
new Beat(startTime + gap * 28, "Space"),
new Beat(startTime + gap * 88, "S"),
new Beat(startTime + gap * 90, "D"),
new Beat(startTime + gap * 92, "S"),
new Beat(startTime + gap * 94, "D"),
new Beat(startTime + gap * 96, "J"),
new Beat(startTime + gap * 98, "K"),
new Beat(startTime + gap * 100, "J"),
new Beat(startTime + gap * 102, "K"),
new Beat(startTime + gap * 104, "D"),
new Beat(startTime + gap * 106, "F"),
new Beat(startTime + gap * 108, "L"),
new Beat(startTime + gap * 110, "Space"),
new Beat(startTime + gap * 112, "S"),
new Beat(startTime + gap * 114, "J"),
new Beat(startTime + gap * 116, "K"),
new Beat(startTime + gap * 118, "L"),
new Beat(startTime + gap * 120, "J"),
new Beat(startTime + gap * 122, "K"),
new Beat(startTime + gap * 124, "J"),
new Beat(startTime + gap * 126, "K"),
new Beat(startTime + gap * 128, "L"),
new Beat(startTime + gap * 130, "Space"),
new Beat(startTime + gap * 132, "D"),
new Beat(startTime + gap * 134, "S"),
new Beat(startTime + gap * 136, "D"),
new Beat(startTime + gap * 138, "S"),
new Beat(startTime + gap * 140, "D"),
new Beat(startTime + gap * 142, "S"),
new Beat(startTime + gap * 144, "K"),
new Beat(startTime + gap * 146, "L"),
new Beat(startTime + gap * 148, "J"),
new Beat(startTime + gap * 150, "K"),
new Beat(startTime + gap * 152, "J"),
new Beat(startTime + gap * 154, "K"),
new Beat(startTime + gap * 156, "L"),
new Beat(startTime + gap * 158, "Space"),
new Beat(startTime + gap * 160, "S"),
new Beat(startTime + gap * 162, "D"),
new Beat(startTime + gap * 164, "F"),
new Beat(startTime + gap * 166, "J"),
new Beat(startTime + gap * 168, "K"),
new Beat(startTime + gap * 170, "L"),
new Beat(startTime + gap * 172, "S"),
new Beat(startTime + gap * 174, "D"),
new Beat(startTime + gap * 176, "S"),
new Beat(startTime + gap * 178, "J"),
new Beat(startTime + gap * 180, "K"),
new Beat(startTime + gap * 182, "J"),
new Beat(startTime + gap * 184, "D"),
new Beat(startTime + gap * 186, "F"),
new Beat(startTime + gap * 188, "D"),
new Beat(startTime + gap * 190, "K"),
new Beat(startTime + gap * 192, "L"),
new Beat(startTime + gap * 194, "K"),
new Beat(startTime + gap * 196, "Space"),
new Beat(startTime + gap * 198, "S"),
new Beat(startTime + gap * 200, "D"),
new Beat(startTime + gap * 202, "F"),
new Beat(startTime + gap * 204, "D"),
new Beat(startTime + gap * 206, "S"),
new Beat(startTime + gap * 208, "K"),
new Beat(startTime + gap * 210, "L"),
new Beat(startTime + gap * 212, "J"),
new Beat(startTime + gap * 214, "K"),
new Beat(startTime + gap * 216, "J"),
new Beat(startTime + gap * 218, "K"),
new Beat(startTime + gap * 220, "L"),
new Beat(startTime + gap * 222, "Space"),
new Beat(startTime + gap * 224, "D"),
new Beat(startTime + gap * 226, "S"),
new Beat(startTime + gap * 228, "D"),
new Beat(startTime + gap * 230, "S"),
new Beat(startTime + gap * 232, "D"),
new Beat(startTime + gap * 234, "S"),
new Beat(startTime + gap * 236, "K"),
new Beat(startTime + gap * 238, "L"),
new Beat(startTime + gap * 240, "J"),
new Beat(startTime + gap * 242, "K"),
new Beat(startTime + gap * 244, "J"),
new Beat(startTime + gap * 246, "K"),
new Beat(startTime + gap * 248, "L"),
new Beat(startTime + gap * 250, "Space"),
new Beat(startTime + gap * 252, "S"),
new Beat(startTime + gap * 254, "D"),
new Beat(startTime + gap * 256, "S"),
new Beat(startTime + gap * 258, "J"),
new Beat(startTime + gap * 260, "K"),
new Beat(startTime + gap * 262, "J"),
new Beat(startTime + gap * 264, "Space"),
new Beat(startTime + gap * 266, "S"),
new Beat(startTime + gap * 268, "D"),
new Beat(startTime + gap * 270, "S"),
new Beat(startTime + gap * 272, "D"),
new Beat(startTime + gap * 274, "S"),
new Beat(startTime + gap * 276, "D"),
new Beat(startTime + gap * 278 - 80, "S"),
new Beat(startTime + gap * 280 - 130, "D"),
new Beat(startTime + gap * 281, "F"),
new Beat(startTime + gap * 284, "J"),
new Beat(startTime + gap * 286 - 80, "K"),
new Beat(startTime + gap * 288 - 130, "L"),
new Beat(startTime + gap * 289, "J"),
new Beat(startTime + gap * 290, "K"),
new Beat(startTime + gap * 291, "J"),
new Beat(startTime + gap * 292, "K"),
new Beat(startTime + gap * 293, "L"),
new Beat(startTime + gap * 294, "Space"),
};
}
else if (titleName.equals("Future Funk - Joakim Karud") && difficulty.equals("Hard")){
int startTime = 2750 - Main.reach_time * 1000; //设置起始时间
int gap = 150; //用来制定节拍的间隔
beats = new Beat[]{
//节拍学习过程
new Beat(startTime, "S"),
new Beat(startTime, "J"),
new Beat(startTime + gap * 2, "D"),
new Beat(startTime + gap * 2, "K"),
new Beat(startTime + gap * 4, "S"),
new Beat(startTime + gap * 4, "J"),
new Beat(startTime + gap * 6, "D"),
new Beat(startTime + gap * 6, "K"),
new Beat(startTime + gap * 8, "S"),
new Beat(startTime + gap * 8, "J"),
new Beat(startTime + gap * 10, "D"),
new Beat(startTime + gap * 10, "K"),
new Beat(startTime + gap * 12 - 80, "S"),
new Beat(startTime + gap * 12 - 80, "J"),
new Beat(startTime + gap * 14 - 130, "D"),
new Beat(startTime + gap * 14 - 130, "K"),
new Beat(startTime + gap * 15, "F"),
new Beat(startTime + gap * 15, "L"),
new Beat(startTime + gap * 18, "J"),
new Beat(startTime + gap * 18, "S"),
new Beat(startTime + gap * 20 - 80, "K"),
new Beat(startTime + gap * 20 - 80, "D"),
new Beat(startTime + gap * 22 - 130, "L"),
new Beat(startTime + gap * 22 - 130, "F"),
new Beat(startTime + gap * 23, "J"),
new Beat(startTime + gap * 23, "F"),
new Beat(startTime + gap * 24, "K"),
new Beat(startTime + gap * 24, "D"),
new Beat(startTime + gap * 25, "J"),
new Beat(startTime + gap * 25, "F"),
new Beat(startTime + gap * 26, "K"),
new Beat(startTime + gap * 26, "D"),
new Beat(startTime + gap * 27, "L"),
new Beat(startTime + gap * 27, "L"),
new Beat(startTime + gap * 28, "Space"),
new Beat(startTime + gap * 36, "D"),
new Beat(startTime + gap * 38, "S"),
new Beat(startTime + gap * 40, "D"),
new Beat(startTime + gap * 42, "S"),
new Beat(startTime + gap * 44, "D"),
new Beat(startTime + gap * 46, "S"),
new Beat(startTime + gap * 48, "D"),
new Beat(startTime + gap * 50, "F"),
new Beat(startTime + gap * 52, "J"),
new Beat(startTime + gap * 54, "K"),
new Beat(startTime + gap * 56, "L"),
new Beat(startTime + gap * 58, "J"),
new Beat(startTime + gap * 60, "K"),
new Beat(startTime + gap * 62, "J"),
new Beat(startTime + gap * 64, "K"),
new Beat(startTime + gap * 66, "L"),
new Beat(startTime + gap * 68, "Space"),
new Beat(startTime + gap * 88, "S"),
new Beat(startTime + gap * 89, "D"),
new Beat(startTime + gap * 90, "S"),
new Beat(startTime + gap * 91, "D"),
new Beat(startTime + gap * 92, "J"),
new Beat(startTime + gap * 93, "K"),
new Beat(startTime + gap * 94, "J"),
new Beat(startTime + gap * 95, "K"),
new Beat(startTime + gap * 96, "D"),
new Beat(startTime + gap * 97, "F"),
new Beat(startTime + gap * 98, "L"),
new Beat(startTime + gap * 99, "Space"),
new Beat(startTime + gap * 100, "S"),
new Beat(startTime + gap * 101, "J"),
new Beat(startTime + gap * 102, "S"),
new Beat(startTime + gap * 103, "D"),
new Beat(startTime + gap * 104, "S"),
new Beat(startTime + gap * 105, "D"),
new Beat(startTime + gap * 106, "J"),
new Beat(startTime + gap * 107, "K"),
new Beat(startTime + gap * 108, "J"),
new Beat(startTime + gap * 109, "K"),
new Beat(startTime + gap * 110, "D"),
new Beat(startTime + gap * 111, "F"),
new Beat(startTime + gap * 112, "L"),
new Beat(startTime + gap * 114, "Space"),
new Beat(startTime + gap * 114, "F"),
new Beat(startTime + gap * 114, "J"),
new Beat(startTime + gap * 116, "K"),
new Beat(startTime + gap * 118, "L"),
new Beat(startTime + gap * 120, "J"),
new Beat(startTime + gap * 122, "K"),
new Beat(startTime + gap * 124, "J"),
new Beat(startTime + gap * 126, "K"),
new Beat(startTime + gap * 128, "L"),
new Beat(startTime + gap * 130, "Space"),
new Beat(startTime + gap * 132, "D"),
new Beat(startTime + gap * 132, "K"),
new Beat(startTime + gap * 134, "S"),
new Beat(startTime + gap * 134, "L"),
new Beat(startTime + gap * 136, "D"),
new Beat(startTime + gap * 136, "K"),
new Beat(startTime + gap * 138, "S"),
new Beat(startTime + gap * 138, "L"),
new Beat(startTime + gap * 140, "D"),
new Beat(startTime + gap * 140, "K"),
new Beat(startTime + gap * 142, "S"),
new Beat(startTime + gap * 142, "L"),
new Beat(startTime + gap * 144, "K"),
new Beat(startTime + gap * 144, "D"),
new Beat(startTime + gap * 146, "S"),
new Beat(startTime + gap * 146, "L"),
new Beat(startTime + gap * 148, "F"),
new Beat(startTime + gap * 148, "J"),
new Beat(startTime + gap * 150, "D"),
new Beat(startTime + gap * 150, "K"),
new Beat(startTime + gap * 152, "F"),
new Beat(startTime + gap * 152, "J"),
new Beat(startTime + gap * 154, "D"),
new Beat(startTime + gap * 154, "K"),
new Beat(startTime + gap * 156, "F"),
new Beat(startTime + gap * 156, "L"),
new Beat(startTime + gap * 158, "Space"),
new Beat(startTime + gap * 160, "S"),
new Beat(startTime + gap * 160, "L"),
new Beat(startTime + gap * 162, "D"),
new Beat(startTime + gap * 162, "K"),
new Beat(startTime + gap * 164, "F"),
new Beat(startTime + gap * 164, "J"),
new Beat(startTime + gap * 166, "J"),
new Beat(startTime + gap * 166, "F"),
new Beat(startTime + gap * 168, "K"),
new Beat(startTime + gap * 168, "D"),
new Beat(startTime + gap * 170, "L"),
new Beat(startTime + gap * 170, "S"),
new Beat(startTime + gap * 172, "S"),
new Beat(startTime + gap * 174, "D"),
new Beat(startTime + gap * 176, "S"),
new Beat(startTime + gap * 178, "J"),
new Beat(startTime + gap * 180, "K"),
new Beat(startTime + gap * 182, "J"),
new Beat(startTime + gap * 184, "D"),
new Beat(startTime + gap * 186, "F"),
new Beat(startTime + gap * 188, "D"),
new Beat(startTime + gap * 190, "K"),
new Beat(startTime + gap * 192, "L"),
new Beat(startTime + gap * 194, "K"),
new Beat(startTime + gap * 196, "Space"),
new Beat(startTime + gap * 196, "D"),
new Beat(startTime + gap * 196, "F"),
new Beat(startTime + gap * 196, "J"),
new Beat(startTime + gap * 196, "K"),
new Beat(startTime + gap * 198, "S"),
new Beat(startTime + gap * 200, "D"),
new Beat(startTime + gap * 202, "F"),
new Beat(startTime + gap * 204, "D"),
new Beat(startTime + gap * 206, "S"),
new Beat(startTime + gap * 208, "K"),
new Beat(startTime + gap * 210, "L"),
new Beat(startTime + gap * 212, "J"),
new Beat(startTime + gap * 214, "K"),
new Beat(startTime + gap * 216, "J"),
new Beat(startTime + gap * 218, "K"),
new Beat(startTime + gap * 220, "L"),
new Beat(startTime + gap * 222, "Space"),
new Beat(startTime + gap * 224, "D"),
new Beat(startTime + gap * 224, "K"),
new Beat(startTime + gap * 226, "S"),
new Beat(startTime + gap * 226, "L"),
new Beat(startTime + gap * 228, "D"),
new Beat(startTime + gap * 228, "K"),
new Beat(startTime + gap * 230, "S"),
new Beat(startTime + gap * 230, "L"),
new Beat(startTime + gap * 232, "D"),
new Beat(startTime + gap * 232, "K"),
new Beat(startTime + gap * 234, "S"),
new Beat(startTime + gap * 234, "L"),
new Beat(startTime + gap * 236, "K"),
new Beat(startTime + gap * 236, "D"),
new Beat(startTime + gap * 238, "L"),
new Beat(startTime + gap * 238, "S"),
new Beat(startTime + gap * 240, "J"),
new Beat(startTime + gap * 240, "F"),
new Beat(startTime + gap * 242, "K"),
new Beat(startTime + gap * 242, "D"),
new Beat(startTime + gap * 244, "J"),
new Beat(startTime + gap * 244, "F"),
new Beat(startTime + gap * 246, "K"),
new Beat(startTime + gap * 246, "D"),
new Beat(startTime + gap * 248, "L"),
new Beat(startTime + gap * 248, "F"),
new Beat(startTime + gap * 250, "Space"),
new Beat(startTime + gap * 252, "S"),
new Beat(startTime + gap * 254, "D"),
new Beat(startTime + gap * 256, "S"),
new Beat(startTime + gap * 258, "J"),
new Beat(startTime + gap * 260, "K"),
new Beat(startTime + gap * 262, "J"),
new Beat(startTime + gap * 264, "Space"),
new Beat(startTime + gap * 266, "S"),
new Beat(startTime + gap * 268, "D"),
new Beat(startTime + gap * 270, "S"),
new Beat(startTime + gap * 272, "D"),
new Beat(startTime + gap * 274, "S"),
new Beat(startTime + gap * 276, "D"),
new Beat(startTime + gap * 278 - 80, "S"),
new Beat(startTime + gap * 280 - 130, "D"),
new Beat(startTime + gap * 281, "F"),
new Beat(startTime + gap * 284, "J"),
new Beat(startTime + gap * 286 - 80, "K"),
new Beat(startTime + gap * 288 - 130, "L"),
new Beat(startTime + gap * 289, "J"),
new Beat(startTime + gap * 290, "K"),
new Beat(startTime + gap * 291, "J"),
new Beat(startTime + gap * 292, "K"),
new Beat(startTime + gap * 293, "L"),
new Beat(startTime + gap * 294, "Space"),
};
}
gameMusic.start();
int i = 0;
while (i < beats.length && !isInterrupted()){
boolean dropped = false;
if (beats[i].getTime() <= gameMusic.getTime()){
Note note = new Note(beats[i].getNoteName());
note.start();
noteList.add(note);
i++;
dropped = true;
}
if (!dropped ){
try {
Thread.sleep(5);
} catch (Exception e){
e.printStackTrace();
}
}
}
}
//判定方块函数
public void judge(String input){
for (int i = 0; i < noteList.size(); i++) {
Note note = noteList.get(i);
if (input.equals(note.getNoteType())){
judgeEvent(note.judge());
break;
}
}
}
//判断事件,判断显示等级
public void judgeEvent(String judge){
if (!judge.equals("None")){
blueFlareImage = new ImageIcon(Main.class.getResource("../images/blueFlare.png")).getImage();
}
if(judge.equals("Miss")){
judgeImage = new ImageIcon(Main.class.getResource("../images/judgeMiss.png")).getImage();
}
else if(judge.equals("Late")){
judgeImage = new ImageIcon(Main.class.getResource("../images/judgeLate.png")).getImage();
}
else if(judge.equals("Early")){
judgeImage = new ImageIcon(Main.class.getResource("../images/judgeEarly.png")).getImage();
}
else if(judge.equals("Good")){
judgeImage = new ImageIcon(Main.class.getResource("../images/judgeGood.png")).getImage();
}
else if(judge.equals("Prefect")){
judgeImage = new ImageIcon(Main.class.getResource("../images/judgePrefect.png")).getImage();
}
}
}
3.4 KeyListener_.java
package Mstw;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class KeyListener_ extends KeyAdapter {
//按下键盘
@Override
public void keyPressed(KeyEvent e){
if (Mstw.game == null){
return;
}
else if (e.getKeyCode() == KeyEvent.VK_S){
Mstw.game.pressS();
}
else if (e.getKeyCode() == KeyEvent.VK_D){
Mstw.game.pressD();
}
else if (e.getKeyCode() == KeyEvent.VK_F){
Mstw.game.pressF();
}
else if (e.getKeyCode() == KeyEvent.VK_SPACE){
Mstw.game.pressSpace();
}
else if (e.getKeyCode() == KeyEvent.VK_J){
Mstw.game.pressJ();
}
else if (e.getKeyCode() == KeyEvent.VK_K){
Mstw.game.pressK();
}
else if (e.getKeyCode() == KeyEvent.VK_L){
Mstw.game.pressL();
}
}
//释放键盘
@Override
public void keyReleased(KeyEvent e){
if (Mstw.game == null){
return;
}
else if (e.getKeyCode() == KeyEvent.VK_S){
Mstw.game.releaseS();
}
else if (e.getKeyCode() == KeyEvent.VK_D){
Mstw.game.releaseD();
}
else if (e.getKeyCode() == KeyEvent.VK_F){
Mstw.game.releaseF();
}
else if (e.getKeyCode() == KeyEvent.VK_SPACE){
Mstw.game.releaseSpace();
}
else if (e.getKeyCode() == KeyEvent.VK_J){
Mstw.game.releaseJ();
}
else if (e.getKeyCode() == KeyEvent.VK_K){
Mstw.game.releaseK();
}
else if (e.getKeyCode() == KeyEvent.VK_L){
Mstw.game.releaseL();
}
}
}
3.5 Mstw.java
package Mstw;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
public class Mstw extends JFrame {
private Image screenImage;
private Graphics screenGraphic;
private int mouseX,mouseY;
private boolean isGameScreen = false;
//从路径中获取图片
//背景图片
private Image Background = new ImageIcon(Main.class.getResource("../images/background.jpg")).getImage();
//上边界
private JLabel menuBar = new JLabel(new ImageIcon(Main.class.getResource("../images/menuBar.png")));
//制作按钮基础图标和鼠标访问图标
private ImageIcon exitButtonBasicImage = new ImageIcon(Main.class.getResource("../images/exitButtonBasic.png"));
private ImageIcon exitButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/exitButtonEntered.png"));
private ImageIcon startButtonBasicImage = new ImageIcon(Main.class.getResource("../images/startButtonBasic.png"));
private ImageIcon startButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/startButtonEntered.png"));
private ImageIcon quitButtonBasicImage = new ImageIcon(Main.class.getResource("../images/quitButtonBasic.png"));
private ImageIcon quitButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/quitButtonEntered.png"));
private ImageIcon easyButtonBasicImage = new ImageIcon(Main.class.getResource("../images/easyButtonBasic.png"));
private ImageIcon easyButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/easyButtonEntered.png"));
private ImageIcon hardButtonBasicImage = new ImageIcon((Main.class.getResource("../images/hardButtonBasic.png")));
private ImageIcon hardButtonEnteredImage = new ImageIcon((Main.class.getResource("../images/hardButtonEntered.png")));
private ImageIcon backButtonBasicImage = new ImageIcon(Main.class.getResource("../images/backButtonBasic.png"));
private ImageIcon backButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/backButtonEntered.png"));
private ImageIcon leftSelectedButtonBasicImage = new ImageIcon(Main.class.getResource("../images/leftSelectedButtonBasic.png"));
private ImageIcon leftSelectedButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/leftSelectedButtonEntered.png"));
private ImageIcon rightSelectedButtonBasicImage = new ImageIcon(Main.class.getResource("../images/rightSelectedButtonBasic.png"));
private ImageIcon rightSelectedButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/rightSelectedButtonEntered.png"));
//设置按钮
private JButton exitButton = new JButton(exitButtonBasicImage);
private JButton startButton = new JButton(startButtonBasicImage);
private JButton quitButton = new JButton(quitButtonBasicImage);
private JButton easyButton = new JButton(easyButtonBasicImage);
private JButton hardButton = new JButton(hardButtonBasicImage);
private JButton backButton = new JButton(backButtonBasicImage);
private JButton leftSelectedButton = new JButton(leftSelectedButtonBasicImage);
private JButton rightSelectedButton = new JButton(rightSelectedButtonBasicImage);
private boolean isMainScreen = false;
//创建数组列表来保存可选择的不同歌曲
ArrayList<Track> trackList = new ArrayList<Track>();
//音乐对应标题图片
private Image titleImage;
//选择不同音乐开始的不同封面
private Image selectedImage;
//所选择的bgm
private Music selectedMusic;
private int nowSelected = 0;
//定义Music变量introMusic,传入首界面bgm
Music introMusic = new Music("bgm.mp3",true);
public static Game game;
//构造方法
public Mstw(){
//将不同歌曲的属性加入到音乐列表中,并且便于组织
trackList.add(new Track("Celebrate TitleImage.png", "Celebrate startImage.png", "gameBackground.jpg","Celebrate1.mp3", "Celebrate1.mp3", "Celebrate - Joakim Karud"));
trackList.add(new Track("Future Funk TitleImage.png", "Future Funk startImage.png", "gameBackground.jpg","Future Funk1.mp3", "Future Funk1.mp3", "Future Funk - Joakim Karud"));
//设置GUI界面
setFocusable(true); //设置屏幕焦点,以便于监听键盘
setUndecorated(true);
setTitle("Melodic sound travels the world"); //设置界面标题
setSize(Main.screen_width,Main.screen_height); //设置界面大小
setResizable(true); //设置窗口可以由用户自由调节大小
setLocationRelativeTo(null); //设置窗口相对于指定组件的位置,null为屏幕中央
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置界面执行程序可关闭
setVisible(true); //设置界面可见
setBackground(new Color(0, 0, 0, 0)); //设置背景颜色
setLayout(null); //设置布局为空
//执行线程,播放音乐
introMusic.start();
//设置右上角退出按钮
quitButton.setBounds(1850, 0, 30, 30); //设置按钮位置
quitButton.setBorderPainted(false);
quitButton.setContentAreaFilled(false);
quitButton.setFocusPainted(false);
quitButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e){
quitButton.setIcon(quitButtonBasicImage);
quitButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
//鼠标访问
@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 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);
//设置上边界,并且可以移动它
menuBar.setBounds(0, 0, 1920, 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);
//设置离开EXIT按钮
exitButton.setBounds(1100, 780, 169, 99);
exitButton.setBorderPainted(false);
exitButton.setContentAreaFilled(false);
exitButton.setFocusPainted(false);
exitButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e){
exitButton.setIcon(exitButtonBasicImage);
exitButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
//鼠标访问
@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 mousePressed(MouseEvent e){
Music buttonEnteredMusic = new Music("buttonPressedMusic.mp3", false);
buttonEnteredMusic.start();
//设置按钮反应时间
try {
Thread.sleep(200);
}
catch (InterruptedException ex){
ex.printStackTrace();
}
System.exit(0);
}
});
add(exitButton);
//设置开始Start按钮
startButton.setBounds(650, 780, 169, 99);
startButton.setBorderPainted(false);
startButton.setContentAreaFilled(false);
startButton.setFocusPainted(false);
startButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e){
startButton.setIcon(startButtonBasicImage);
startButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
//鼠标访问
@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 mousePressed(MouseEvent e){
Music buttonEnteredMusic = new Music("buttonPressedMusic.mp3", false);
buttonEnteredMusic.start();
//设置按钮反应时间
try {
Thread.sleep(500);
}
catch (InterruptedException ex){
ex.printStackTrace();
}
//调用相应函数
enterMain();
}
});
add(startButton);
//设置左选择按钮
leftSelectedButton.setVisible(false);
leftSelectedButton.setBounds(350, 450, 100, 100);
leftSelectedButton.setBorderPainted(false);
leftSelectedButton.setContentAreaFilled(false);
leftSelectedButton.setFocusPainted(false);
leftSelectedButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e){
leftSelectedButton.setIcon(leftSelectedButtonBasicImage);
leftSelectedButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
//鼠标访问
@Override
public void mouseEntered(MouseEvent e){
leftSelectedButton.setIcon(leftSelectedButtonEnteredImage);
leftSelectedButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
Music buttonEnteredMusic = new Music("buttonEnteredMusic.mp3", false);
buttonEnteredMusic.start();
}
//鼠标点击
@Override
public void mousePressed(MouseEvent e){
Music buttonEnteredMusic = new Music("buttonPressedMusic.mp3", false);
buttonEnteredMusic.start();
try {
Thread.sleep(200);
}
catch (InterruptedException ex){
ex.printStackTrace();
}
selectLift(); //按左选按钮调用selectLift函数
}
});
add(leftSelectedButton);
//设置右选择按钮
rightSelectedButton.setVisible(false);
rightSelectedButton.setBounds(1470, 450, 100, 100);
rightSelectedButton.setBorderPainted(false);
rightSelectedButton.setContentAreaFilled(false);
rightSelectedButton.setFocusPainted(false);
rightSelectedButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e){
rightSelectedButton.setIcon(rightSelectedButtonBasicImage);
rightSelectedButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
//鼠标访问
@Override
public void mouseEntered(MouseEvent e){
rightSelectedButton.setIcon(rightSelectedButtonEnteredImage);
rightSelectedButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
Music buttonEnteredMusic = new Music("buttonEnteredMusic.mp3", false);
buttonEnteredMusic.start();
}
//鼠标点击
@Override
public void mousePressed(MouseEvent e){
Music buttonEnteredMusic = new Music("buttonPressedMusic.mp3", false);
buttonEnteredMusic.start();
try {
Thread.sleep(200);
}
catch (InterruptedException ex){
ex.printStackTrace();
}
selectRight(); //按右选按钮调用selectRight函数
}
});
add(rightSelectedButton);
//设置简单按钮
easyButton.setVisible(false);
easyButton.setBounds(550, 800, 300, 150); //设置按钮位置
easyButton.setBorderPainted(false);
easyButton.setContentAreaFilled(false);
easyButton.setFocusPainted(false);
easyButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e){
easyButton.setIcon(easyButtonBasicImage);
easyButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
//鼠标访问
@Override
public void mouseEntered(MouseEvent e){
easyButton.setIcon(easyButtonEnteredImage);
easyButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
Music buttonEnteredMusic = new Music("buttonEnteredMusic.mp3", false);
buttonEnteredMusic.start();
}
//鼠标点击
@Override
public void mousePressed(MouseEvent e){
Music buttonEnteredMusic = new Music("buttonPressedMusic.mp3", false);
buttonEnteredMusic.start();
Main.scout = 0;
try {
Thread.sleep(200);
}
catch (InterruptedException ex){
ex.printStackTrace();
}
//开始游戏,难度为Easy
gameStart(nowSelected,"Easy");
}
});
add(easyButton);
//设置困难按钮
hardButton.setVisible(false);
hardButton.setBounds(1070, 800, 300, 150); //设置按钮位置
hardButton.setBorderPainted(false);
hardButton.setContentAreaFilled(false);
hardButton.setFocusPainted(false);
hardButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e){
hardButton.setIcon(hardButtonBasicImage);
hardButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
//鼠标访问
@Override
public void mouseEntered(MouseEvent e){
hardButton.setIcon(hardButtonEnteredImage);
hardButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
Music buttonEnteredMusic = new Music("buttonEnteredMusic.mp3", false);
buttonEnteredMusic.start();
}
//鼠标点击
@Override
public void mousePressed(MouseEvent e){
Music buttonEnteredMusic = new Music("buttonPressedMusic.mp3", false);
buttonEnteredMusic.start();
Main.scout = 0;
try {
Thread.sleep(200);
}
catch (InterruptedException ex){
ex.printStackTrace();
}
//开始游戏,难度为Hard
gameStart(nowSelected,"Hard");
}
});
add(hardButton);
//设置返回按钮
backButton.setBounds(20, 50, 100, 100);
backButton.setVisible(false);
backButton.setBorderPainted(false);
backButton.setContentAreaFilled(false);
backButton.setFocusPainted(false);
backButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e){
backButton.setIcon(backButtonBasicImage);
backButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
//鼠标访问
@Override
public void mouseEntered(MouseEvent e){
backButton.setIcon(backButtonEnteredImage);
backButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
Music buttonEnteredMusic = new Music("buttonEnteredMusic.mp3", false);
buttonEnteredMusic.start();
}
//鼠标点击
@Override
public void mousePressed(MouseEvent e){
Music buttonEnteredMusic = new Music("buttonPressedMusic.mp3", false);
buttonEnteredMusic.start();
//设置按钮反应时间
try {
Thread.sleep(200);
}
catch (InterruptedException ex){
ex.printStackTrace();
}
//返回上一个界面
backMain(); //返回界面函数
}
});
add(backButton);
}
//重写Graphics类的paint方法进行绘图
public void paint(Graphics g){
//创建一幅用于双缓冲,可以在屏幕外绘制的图像
screenImage = createImage(Main.screen_width,Main.screen_height);
//得到一个Graphics对象
screenGraphic = screenImage.getGraphics();
//调用screenDraw方法进行绘画
screenDraw((Graphics2D) screenGraphic);
//Graphics对象g调用drawImage方法,要加载的图像为screenImage,绘制图像矩阵左上角的位置为(0,0),容器为空
g.drawImage(screenImage, 0, 0, null);
}
public void screenDraw(Graphics2D g) {
//Graphics对象g调用drawImage方法,要加载的图像为introBackground,绘制图像矩阵左上角的位置为(0,0),容器为空
g.drawImage(Background,0,0,null);
//如果是游戏选择界面的话就绘制图片和标题
if (isMainScreen){
g.drawImage(selectedImage, 710, 250, null);
g.drawImage(titleImage, 710, 150, null);
}
//如果进入到游戏屏幕,才能实现游戏功能
if (isGameScreen){
game.screenDraw(g);
}
paintComponents(g);
try{
Thread.sleep(5);
} catch (Exception e){
e.printStackTrace();
}
//重绘图像
this.repaint();
}
//根据当前所选择的音乐变换bgm和图片
public void selectTrack(int nowSelected){
if (selectedMusic != null){
selectedMusic.close();
}
titleImage = new ImageIcon(Main.class.getResource("../images/"+trackList.get(nowSelected).getTitleImage())).getImage();
selectedImage = new ImageIcon(Main.class.getResource("../images/"+trackList.get(nowSelected).getStartImage())).getImage();
selectedMusic = new Music(trackList.get(nowSelected).getStartMusic(), true);
selectedMusic.start();
}
//向左选择的函数
public void selectLift(){
//如果是第一首再按左就跳到最后一首
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); //调用方法实现歌曲和图片的切换
}
//开始游戏执行的函数,参数为选择的难度
public void gameStart(int nowSelected,String difficulty){
if (selectedMusic != null){
selectedMusic.close();
}
easyButton.setVisible(false);
hardButton.setVisible(false);
backButton.setVisible(true);
leftSelectedButton.setVisible(false);
rightSelectedButton.setVisible(false);
Background = new ImageIcon(Main.class.getResource("../images/gameBackground.jpg")).getImage();
isGameScreen = true;
isMainScreen = false;
//接收键盘事件
addKeyListener(new KeyListener_());
//对于不同歌曲传入不同参数
game = new Game(trackList.get(nowSelected).getTitleName(), difficulty, trackList.get(nowSelected).getGameMusic());
game.start();
//始终捕捉键盘焦点
setFocusable(true);
}
//点击返回按钮返回上一个界面的函数
public void backMain(){
easyButton.setVisible(true);
hardButton.setVisible(true);
backButton.setVisible(false);
leftSelectedButton.setVisible(true);
rightSelectedButton.setVisible(true);
Background = new ImageIcon(Main.class.getResource("../images/introBackground.jpg")).getImage();
isMainScreen = true; //返回的第二个界面是游戏选择界面
selectTrack(nowSelected);
//第二个界面不是正式游戏界面
isGameScreen = false;
//关闭游戏中的音乐
game.close();
}
public void enterMain(){
//点击开始按钮后隐藏start和exit按钮
startButton.setVisible(false);
exitButton.setVisible(false);
//点击开始按钮后显示easy和hard按钮和左右选择按钮
easyButton.setVisible(true);
hardButton.setVisible(true);
leftSelectedButton.setVisible(true);
rightSelectedButton.setVisible(true);
Background = new ImageIcon(Main.class.getResource("../images/introBackground.jpg")).getImage();
//进入到游戏主界面(选择界面)
isMainScreen = true;
//点击开始按钮关闭第一个页面的bgm
introMusic.close();
//默认点击开始首先进入第一首歌
selectTrack(0);
}
}
3.6 Music.java
package Mstw;
import javazoom.jl.player.Player;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
public class Music extends Thread{
private Player player;
private boolean isLoop;
private File file;
private FileInputStream fis;
private BufferedInputStream bis;
//重载构造函数,传入参数为名字和是否循环
public Music(String name, boolean isLoop){
try {
this.isLoop = isLoop;
//创建一个File对象
file = new File(Main.class.getResource("../music/"+name).toURI());
//创建一个输入流
fis = new FileInputStream(file);
//创建一个缓冲流
bis = new BufferedInputStream(fis);
//创建播放器对象,将文件的缓冲输入流传入进去
player = new Player(bis);
}
catch(Exception e){
e.printStackTrace();
}
}
public int getTime(){
if (player == null)
return 0;
return player.getPosition();
}
public void close(){
isLoop = false;
player.close();
this.interrupt();
}
@Override
public void run() {
try {
do{
player.play(); //用播放方法进行播放
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
player = new Player(bis);
}while(isLoop); //循环播放,直到有终止条件isLoop = false
}
catch(Exception e){
e.printStackTrace();
}
}
}
3.7 Note.java
package Mstw;
import javax.swing.*;
import java.awt.*;
public class Note extends Thread{
private Image noteBasicImage = new ImageIcon(Main.class.getResource("../images/noteBasic.png")).getImage();
private int x, y = 600 - (1000 / Main.sleep_time * Main.note_speed) * Main.reach_time;
private String noteType;
private boolean proceeded = true;
public boolean isProceeded() {
return proceeded;
}
public String getNoteType(){
return noteType;
}
public void close() {
proceeded = false;
}
public Note(String noteType){
if(noteType.equals("S")){
x = 424;
}
if(noteType.equals("D")){
x = 578;
}
if(noteType.equals("F")){
x = 732;
}
if(noteType.equals("Space")){
x = 886;
}
if(noteType.equals("J")){
x = 1040;
}
if(noteType.equals("K")){
x = 1194;
}
if(noteType.equals("L")){
x = 1348;
}
this.noteType = noteType;
}
public void screenDraw(Graphics2D g){
g.drawImage(noteBasicImage, x, y, null);
}
//方块下落函数
public void drop(){
y += Main.note_speed; //以一个速度下落
//方块超出判定区就消失,并且算Miss
if (y > 965){
System.out.println("Miss");
close();
}
}
@Override
public void run(){
try{
while (true){
drop();
if (proceeded){
Thread.sleep(Main.sleep_time);
}
else {
interrupt();
break;
}
}
} catch (Exception e){
e.printStackTrace();
}
}
public String judge(){
if (y > 935){
System.out.println("Late");
Main.scout += 10;
close();
return "Late";
}
else if (y > 915){
System.out.println("Good");
Main.scout += 20;
close();
return "Good";
}
else if (y > 895){
System.out.println("Prefect");
Main.scout += 40;
close();
return "Prefect";
}
else if (y > 875){
System.out.println("Early");
Main.scout += 10;
close();
return "Early";
}
return "None";
}
public int getY(){
return y;
}
}
3.8 Track.java
package Mstw;
public class Track {
private String titleImage;
private String startImage;
private String gameImage;
private String startMusic;
private String gameMusic;
private String titleName;
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 getGameMusic(){
return gameMusic;
}
public void setGameMusic(String gameMusic){
this.gameMusic = gameMusic;
}
public String getTitleName(){
return titleName;
}
public void setTitleName(String titleName){
this.titleName = titleName;
}
public Track(String titleImage, String startImage, String gameImage, String startMusic, String gameMusic, String titleName){
this.titleImage = titleImage;
this.startImage = startImage;
this.gameImage = gameImage;
this.startMusic = startMusic;
this.gameMusic = gameMusic;
this.titleName = titleName;
}
}