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

[버블버블게임만들기] 11. 버블 발사하기(2)

by dantriss 2023. 8. 5.

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

IDE : IntelliJ

언어 : Java 8

스프링부트 버전 : 2.7.13

DB : MySQL

빌드관리 도구 : Maven

OS : iOS

참고유튜브 : 메타코딩


지난 포스팅에서 버블의 위치를 잡아주는 작업을 했으니 이번엔 실제로 버블이 나가는 과정을 작성해보자

 

bubble 클래스에서 initThread 메서드를 추가해준다.

 

캐릭터의 방향이 왼쪽이라면 왼쪽으로

그외 상황이라면 오른쪽으로 버블이 이동하게 작성해준다.

private void initThread(){
    new Thread(()->{
        if(player.getPlayerDirection() == PlayerDirection.LEFT){
            left();
        }else {
            right();
        }
    })
    .start();
}

 

left 메서드는 아래와 같이 작성해준다.

반복문을 활용해서 x좌표를 왼쪽으로 이동시키기위해 증감연산자인 -- 로 점차 감소하게 작성해주고 해당 위치를 set 해준다.

너무 빠르게 동작 할 수 있기 때문에 스레드간에 0.001초 로 간격을 벌려준다.

해당 이동이 끝나면 up 메서드를 동작시켜준다.

같은 방법으로 right 메서드도 작성해주자 

@Override
public void left() {
    left = true;
    for (int i = 0; i < 400; i++) {
        x--;
        setLocation(x,y);

        try {
            Thread.sleep(1);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
    up();
}

 

right 메서드에서 x좌표 증감연산자는 ++ 로 변경해주어야 한다.

@Override
public void right() {
    right = true;
    for (int i = 0; i < 400; i++) {
        x++;
        setLocation(x,y);

        try {
            Thread.sleep(1);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
    up();
}

 

다음은 up 메서드이다 up 메서드에선 for 문이 아니라 while문으로 버블을 프레임 밖으로 나가도록 한다.

@Override
public void up() {
    up = true;
    while (true){
        y--;
        setLocation(x,y);

        try {
            Thread.sleep(1);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}

 

프로그램을 실행서 버블을 발사해보면 버블이 캐릭터 방향에 따라서 나가는 방향이 정해지고

맵 밖으로 이동할 때까지 올라가는걸 확인할 수 있다.

댓글