자바의 스윙 Swing 도구를 이용하면
JFrame, JLabel..
간단한 플래포머 게임을 만들어볼 수 있다.
요구사항
===== =====
좌우로 이동하는 기능
점프 기능
좌우 벽 구현
작업의 전체 그림
1.우선 화면을 보여줄 프레임이 있어야 한다.
2.캐릭터를 보여줄 라벨을 정의해야 한다.
3.캐릭터의 동작을 나타내는 인터페이스를 만들어야 한다.
4.이동범위를 감시하고 제한하는 쓰레드가 필요하다.
⭐1.프레임을 보여줄 클래스 BubleFrame 설계
1) JFrama 상속
2) 프레임에 올릴 배경이미지를 JLabel 변수로
움직이는 캐릭터는 클래스 변수로 선언했다.
3) 생성자를 만들었다.
주요기능(요소생성, 디자인, 상호작용)은
생성자에 담을 수도 있지만 따로 메서드에 담았다.
public class BubbleFrame extends JFrame {
//멤버변수
private JLabel backgroundMap;
private Player player;
//생성자
public BubbleFrame() {
initData();
setInitLayout();
addEventListener();
}
4) initData 클래스에 요소들을 생성해줬다.
//메서드
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();
}
5) setInitLaylout 메서드에 프레임의 디자인을 정의했다.
private void setInitLayout() {
//좌표기준 (절대 레이아웃 Absolute Layout)
setLayout(null);
//사이즈 조절 금지
setResizable(false);
//루트패널을 화면 가운데 배치해준다.
setLocationRelativeTo(null);
//todo player add() 처리하기
add(player);
//맨 마지막
setVisible(true);
}
6) 키보드 방향키를 입력하면 반응하는 기능을 구현하기 위해
addEventListener 메서드에 KeyListener 클래스를 익명클래스로 삽입했다.
/*
키보드 동작은
라벨보다는
프레임이 받는 것이 좋다.
*/
private void addEventListener() {
//프레임에 키보드 이벤트 리스너 등록 처리
this.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyCode());
//조건문 switch
switch (e.getKeyCode()) {
case KeyEvent.VK_LEFT:
//Player 클래스에 정의한 left() 메서드 호출
player.left();
break;
case KeyEvent.VK_RIGHT:
player.right();
break;
case KeyEvent.VK_UP:
player.up();
break;
}
}
@Override
public void keyReleased(KeyEvent e) {
}
});
}
⭐2. 캐릭터의 동작만을 따로 정의하는 인터페이스 Movable 설계
package _bubble.test01;
/**
* 5.1
* 캐릭터의 동작을
* 인터페이스로 정의한다.
*/
public interface Movable {
//public abstract 생략 가능
public abstract void left();
void right();
void up();
void down();
}
⭐3. 캐릭터를 나타내기 위해
움직이는 이미지라벨을 보여줄 클래스 Player 설계
1) JLable 상속
2) 미리 만들어둔 인터페이스 Movable 구현
3) 캐릭터의 좌표값을 변수로 선언
4) 이미지 라벨에 올릴 이미지파일을 ImagIcon 변수로 선언
5) 생성자 작성
package _bubble.test01;
import javax.swing.*;
/**
* 5.1
* 플레이어 클래스 설계
* Player 클래스가 컴포넌트로 들어가게 하려면
* JLabel을 상속해줘야 한다.
*/
public class Player extends JLabel implements Movable{
//멤버변수
private int x;
private int y;
private ImageIcon playerR, playerL;
//private ImageIcon playerL;
//생성자
public Player() {
initData();
setInitLayout();
}
6) 요소를 만들고 디자인을 정의하는 메서드
//메서드
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);
}
7) Movable 인터페이스의 추상메서드를 구현
@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() {
}
}//Player
8) 중간테스트
아직 캐릭터가 움직이지는 않지만 키보드 입력에 시스템이 응답하고 있다.
'Java' 카테고리의 다른 글
자바 Swing 예제. 플래포머 게임 만들기 3.바닥구현 (0) | 2025.05.07 |
---|---|
컬렉션 프레임워크. 배열보다 나은 데이터 정리법 1. List (0) | 2025.05.02 |
Swing 예제, KeyListener를 활용해 방향키 기반 게임 만들기 (0) | 2025.04.30 |
Swing 예제, 로또번호 만들기 (0) | 2025.04.30 |
Swing예제, KeyListener로 특정 키 값 인식 (0) | 2025.04.29 |