JAVA

버블버블 게임 1단계 (기본 화면 , 키 이벤트)

jiyoon12 2025. 5. 1. 10:53
  • 인터페이스
package bubble.test01;

public interface Moveable {
    // 추상메서드 public abstract 생략 가능
    void left();
    void right();
    void up();
    void down();
}

 

  • 버블 프레임 코드
package bubble.test01;

import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class BubbleFrame extends JFrame {

    private JLabel backgroundMap;
    private Player player;

    //생성자
    public BubbleFrame() {
        initData();
        setInitLayout();
        addEventListener();
    }

    private void initData() {
        setTitle("버블버블게임");
        setSize(1000, 640);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        backgroundMap = new JLabel(new ImageIcon("img/backgroundMap.png"));
        // 루트 패널에 JLabel 넣어보기
        setContentPane(backgroundMap);

        player = new Player();
    }

    private void setInitLayout() {
        setLayout(null); // 좌표기준(절대 레이아웃)
        setResizable(false); // 리사이즈 조절 막기
        setLocationRelativeTo(null); // JFrame 화면 가운데 배치해줌

        add(player);
        setVisible(true);

    }

    private void addEventListener() {
        // 프레임에 키보드 이벤트 리스너 등록 처리
        this.addKeyListener(new KeyListener() {
            @Override
            public void keyTyped(KeyEvent e) {

            }

            @Override
            public void keyPressed(KeyEvent e) {
                System.out.println("code : " + e.getKeyCode());
                switch (e.getKeyCode()) {
                    case KeyEvent.VK_LEFT:
                        player.left();
                        break;
                    case KeyEvent.VK_RIGHT:
                        player.right();
                        break;
                    case KeyEvent.VK_UP:
                        player.up();
                        break;
                }
            }

            @Override
            public void keyReleased(KeyEvent e) {

            }
        });

    }

    public static void main(String[] args) {
        new BubbleFrame();
    }
}

 

  • 플레이어 코드
package bubble.test01;

import javax.swing.*;

public class Player extends JLabel implements Moveable {

    private int x;
    private int y;

    private ImageIcon playerR;
    private ImageIcon playerL;

    public Player() {
        initData();
        setInitLayout();
    }

    private void initData() {
        playerR = new ImageIcon("img/playerR.png");
        playerL = new ImageIcon("img/playerL.png");
    }


    private void setInitLayout() {
        x = 55;
        y = 535;
        setSize(50,50);
        setIcon(playerR);
        setLocation(x,y);
    }

    @Override
    public void left() {
        System.out.println("player left() 메서드 호출 됨");
    }

    @Override
    public void right() {
        System.out.println("player right() 메서드 호출 됨");
    }

    @Override
    public void up() {
        System.out.println("player up() 메서드 호출 됨");
    }

    @Override
    public void down() {

    }
}