Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- multi-threading
- 형 변환
- 접근제어지시자
- OPP개념
- JAVA기초
- Java데이터 타입
- Thread
- function
- Java
- continue문
- IntelliJ IDEA
- JAVA객체지향
- 포함관계
- for문
- 인텔리제이 한글 깨짐 해결법
- 반복문
- this예약어
- 인텔리제이 기초 설정
- break문
- 메서드
- 컴파일
- 생성자
- 자바 멀티스레딩
- java변수
- While
- 연관관계
- 메서드 오버로딩
- 시스템 환경 변수 편집
- 상수
- 집합관계
Archives
- Today
- Total
최원종의 개발 블로그
Bubble_1(기본 화면완성) 본문
인터페이스(iinterface)
인터페이스는 "이 클래스 안에 이 메서드들은 구현해야 한다"는 약속.
Moveable (인터페이스 - 설계도)
↓ implements (구현)
Player (실제로 메서드를 만드는 클래스)
Player가 Moveable을 구현하면, left() right() up() down() 4개를 반드시 만들어야 함
파일 구성
bubble/test01/
├── Moveable.java ← 인터페이스 (이동 메서드 설계도)
├── Player.java ← 플레이어 (JLabel 상속 + Moveable 구현)
└── BubbleFrame.java ← 게임 프레임 (화면 구성 + 키 이벤트)
코드
-인터페이스
package test01;
public interface Moveable {
public abstract void left();
public abstract void right();
public abstract void up();
public abstract void down();
}
-Player
package 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 = 555;
setSize(50, 50);
setIcon(playerR); // 초기 방향 설정
setLocation(x, y);
}
@Override
public void left() {
setIcon(playerL);
System.out.println("player left() 호출");
}
@Override
public void right() {
setIcon(playerR);
System.out.println("player right() 호출");
}
@Override
public void up() {
System.out.println("player up() 호출");
}
@Override
public void down() {
System.out.println("player down() 호출");
}
}
-BubbleFrame
package test01;
import javax.swing.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
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"));
setContentPane(backgroundMap);
player = new Player();
}
private void setInitLayout() {
setLayout(null);//좌표기반
setResizable(false); //창 크기 고정
setLocationRelativeTo(null); //화면 정 중앙 배치 (프레임)
backgroundMap.add(player);
setVisible(true);// 화면에 보이게
}
private void addEventListener() {
this.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
//방향키 코드를 Player의 이동 메서드로 연결
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 keyPressed(KeyEvent e) {
}
});
}
//테스트 코드
public static void main(String[] args) {
new BubbleFrame();
}
}
-출력화면
'Java > SWING' 카테고리의 다른 글
| Bubble_3(왼쪽 오른쪽 벽 감지) (0) | 2026.03.19 |
|---|---|
| Bubble_2(이동, 점프) (0) | 2026.03.19 |
| 로또 게임 만들기 (0) | 2026.03.18 |
| Swing (Thread 활용) (0) | 2026.03.18 |
| JLable 사용해 이미지 겹치기 (0) | 2026.03.17 |



