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

[버블버블게임만들기] 2. 캐릭터 좌우로 움직이게하기

by dantriss 2023. 7. 29.

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

IDE : IntelliJ

언어 : Java 8

스프링부트 버전 : 2.7.13

DB : MySQL

빌드관리 도구 : Maven

OS : iOS

참고유튜브 : 메타코딩


 

프레임에 맵과 케릭터를 넣었으니 이제 넣은 케릭터를 움직이게 해보자

Moveable 인터페이스 생성

 

이동을 위해서 아래와 같은 추상메서드들을 작성

 

Player 클래스로 이동해서 moveable 인터페이스를 상속받고 오버라이드해준다.

 

그 후 움직임 상태를 확인하기 위해 boolean 으로 각각 변수를 만들어준 후 initSetting에서 각각 값들을 false로 지정해준다.

 

 

BubbleFrame 클래스로 이동해서 initListener 메서드를 생성하고 keyListener에서 ketAdapter를 초기화해준다.

 

KeyAdapter를 확인해보면 keyListener를 상속받고 있으며 keyTyped, keyPressed, keyReleased 함수를 가지고 있다.

 

여기서 우리가 사용할 메서드는 keyPressed 메서드, 해당 메서드를 오버라이드 해준다. (mac commend + N)

 

키를 눌렀을때 잘 동작하는지 확인해보기 위해서 콘솔에서 확인해보면

 

방향키를 눌렀을때 순서대로 오른쪽, 왼쪽, 위, 아래를 눌렀을때 아래와 같이 값이 출력되는걸 확인할 수 있다.

 

스위치문으로 아래와 같이 키보드에서 키를 입력 받았을때 다음과 같이 코드로 해서 사용할 수 있다.

 

하지만 하나씩 찾을필요도 없고 어떤게 왼쪽인지 오른쪽인지 헷갈리기 때문에

keyEvent를 활용해서 각각 방향키를 눌렀을 때를 아래와 같이 사용할 수 있다.

 

이제 각각 키보드를 눌렀을때 케릭터를 움직이기 위해서 스위치문을 활용해서 아래와 같이 작성해준다.

 

private void initListener(){
    addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            super.keyPressed(e);
            System.out.println(e.getKeyCode());

            switch (e.getKeyCode()){
                case KeyEvent.VK_LEFT:
                    player.left();
                break;
                case KeyEvent.VK_RIGHT:
                    player.right();
                break;
                case KeyEvent.VK_DOWN:
                    player.down();
                break;
                case KeyEvent.VK_UP:
                    player.up();
                break;
            }

        }
    });
}

 

Player 클래스로 이동해서 왼쪽과 오른쪽 키보드 버튼을 눌렀을때 케릭터를 움직이게 하기 위해서 

x축을 각각 10씩 +- 해준다.

왼쪽을 눌렀을때는 playerL이미지를 사용해서 왼쪽으로 이동할때는 어색하지 않게 왼쪽을 보는 이미지를 사용해준다.

@Override
public void left() {
    setIcon(playerL);
    x = x - 10;
    setLocation(x,y);
}

@Override
public void right() {
    setIcon(playerR);
    x = x +10;
    setLocation(x,y);
}

 

실행을 해보면 케릭터를 좌우로 움직일 수 있다.

 

댓글