본문 바로가기
프로젝트/버블버블게임 만들기

[버블버블게임만들기] 4. 캐릭터 점프하기

by dantriss 2023. 7. 31.

유튜브에서 예전부터 해보고싶던 버블버블게임만들기 프로젝트를 클론코딩해보며 진행사항을 기록하고자 한다.

IDE : IntelliJ

언어 : Java 8

스프링부트 버전 : 2.7.13

DB : MySQL

빌드관리 도구 : Maven

OS : iOS

참고유튜브 : 메타코딩


캐릭터를 좌우로 움직이게 해봤으니 이제 점프를 하게 해보자

player 클래스에서 속도와 점프속도를 상수로 만들어준다.

 

left/right에서 x좌표를 x=x-SPEED로 수정해준다.

변경전
변경후

 

 

이제 up을 수정해줄 건데 아래와 같이 수정해준다.

boolean 인 up을 false 에서 true 로 값을 변경해주고 

while 문이 아닌 for 문으로 점프 했을때 적정값을 찾아서 지정해주어야 하는데 이번 프로젝트에선 130을 기준으로 하고

130을 JUMPSPEED로 나눈 값으로 i 를 반복해준다.

그 후 변경된 y값을 setLocation으로 지정해주고 각 스레드별로 0.01초의 텀을 준다.

for 문이 종료된 후 true였던 up을 다시 false로 변경한 후 down 메서드를 호출해준다.

@Override
public void up() {
    System.out.println("up");
    up = true;
    new Thread(()->{
        for (int i = 0; i < 130/JUMPSPEED; i++) {
            y = y-JUMPSPEED;
            setLocation(x,y);
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
        up = false;
        down();
    }).start();

}

 

같은 방법으로 down 메서드도 작성해준다.

y값을 + 해준다는 것과 for 문 종료 후 up 메서드를 호출하지 않는다는 것을 제외하고는 up메서드와 동일하다

@Override
public void down() {
    System.out.println("down");
    new Thread(()->{
        for (int i = 0; i < 130/JUMPSPEED; i++) {
            y = y+JUMPSPEED;
            setLocation(x,y);
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
        down = false;
    }).start();

}

 

BubbleFrame으로 이동해서 키를 눌렀을때 메서드인 keyPressed 메서드에서 up부분을 아래와 같이 수정해준다.

캐릭터가 점프하고 있지 않거나 /  아래로 떨어지고 있는 경우가 아닐때 캐릭터를 점프하도록 작성해준다.

 

프로그램을 실행해보면 캐릭터가 점프하고 자연스럽게 아래로 떨어지는걸 확인할 수 있다.

댓글