각각의 노래의 박자에 맞게 노트를 작성합니다.
@Override
public void run() {
dropNotes(this.titleName); // 선택된 곡 노트드랍
}
public void dropNotes(String titleName) { // 선택된 곡 매개변수
Beat[] beats = null;
if(titleName.equals("Again") && difficulty.equals("Easy")) {
// 난이도 구분
int startTime = 1000 - Main.REACH_TIME * 1000;
int gap = 125; // 1/8의 간격으로 노트드랍
beats = new Beat[] {
new Beat(startTime, "S"),
new Beat(startTime + gap * 2, "D"),
new Beat(startTime + gap * 4, "S"),
new Beat(startTime + gap * 6, "F"),
.
.
.노트작성
.
.
new Beat(startTime + gap * 340, "Space")
};
}
노트가 화면을 지나가면 사라질 수 있도록 만듭니다.
private String noteType;
private boolean proceeded = true; // 현재 노트 진행여부 변수
public String getNoteType() { // 현재 노트타입 반환메소드
return noteType;
}
public boolean isProceeded() { // getter메소드 생성
return proceeded;
}
public void close() { // 노트 중지
proceeded = false;
}
public void drop( ) { // 판정 범위
y += Main.NOTE_SPEED;
if(y > 620) { // 판정바 위치를 벗어나는 경우
System.out.println("Miss");
close();
}
}
public void run() {
try {
while (true) {
drop();
if(proceeded) { // 진행중이라면 간격만큼 이동
Thread.sleep(Main.SLEEP_TIME);
}
else {
interrupt(); // 노트 쓰레드 정지
break;
}
}
} catch(Exception e) {
System.err.println(e.getMessage());
}
}
public void judge() { // 판정범위 설정
if(y >= 613) {
System.out.print("Late");
return "Late";
}
else if(y >= 600 ){
System.out.print("Good");
return "Good"
}
else if(y >= 587 ){
System.out.print("Great");
return "Great"
}
else if(y >= 573 ){
System.out.print("Perfect");
return "Late"
}
else if(y >= 565 ){
System.out.print("Great");
return "Great"
}
else if(y >= 550 ){
System.out.print("Good");
return "Good"
}
else if(y >= 535 ){
System.out.print("Early");
return "Early"
}
return "None"
}
public int getY(){
return y;
}
자료구조 q처럼 먼저 만들어진 노트가 먼저 판정을 받아야한다.
반복문을 통해 인덱스에서 0부터 탐색하여 가장 먼저 떨어지는 노트부터 판정할 수 있다.
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;
}
}
}
'개인프로젝트 > 리듬게임만들기' 카테고리의 다른 글
[내가 만든 프로젝트 코드 분석 | 리듬게임 만들기] 14. 박자에 맞추어 노트 찍기 (1) | 2024.02.18 |
---|---|
[내가 만든 프로젝트 코드 분석 | 리듬게임 만들기] 13.노트 이동 애니메이션 (0) | 2024.02.17 |
[내가 만든 프로젝트 코드 분석 | 리듬게임 만들기] 12.개별게임 곡 재생하기 (1) | 2024.02.16 |
[내가 만든 프로젝트 코드 분석 | 리듬게임 만들기] 11.키보드 입력 이벤트 리스너 (1) | 2024.02.15 |
[내가 만든 프로젝트 코드 분석 | 리듬게임 만들기] 10.게임화면 디자인 (1) | 2024.02.14 |