물방울은 JPrame 내부의 JLabel 로 화면에 나오기 때문에 JLabel 을 상속받아 구현됩니다.
그리고, 물방울은 생성되면 상승하기만 하기 때문에 아래와 같은 상태들을 가지게 됩니다.
@Getter
@Setter
public class Bubble extends JLabel{
	// 위치 상태
	private int x;
	private int y;
	
	// 움직임 상태
	private boolean left;
	private boolean right;
	private boolean up;
	
	// 적군을 맞춘 상태
	private int state; // 0(물방울), 1(적을 가둔 물방울)
	
	private ImageIcon bubble; // 물방울
	private ImageIcon bubbled; // 적을 가둔 물방울
	private ImageIcon bomb; // 물방울이 터진거
	
}
	private Player player;
	
		public Bubble(Player player) {
		this.player = player;
		initObject();
		initSetting();
	}
	
	private void initSetting() {
    left = false;  // 물방울이 왼쪽으로 움직이는 상태 초기화
    right = false; // 물방울이 오른쪽으로 움직이는 상태 초기화
    up = false;    // 물방울이 위로 움직이는 상태 초기화
    
    // 물방울 생성 위치를 플레이어 위치로 설정
    x = player.getX();
    y = player.getY();
    
    setIcon(bubble); // 물방울 초기 이미지를 설정
    setSize(50, 50); // 물방울 크기 설정
    state = 0;       // 물방울 상태를 기본 상태(0)로 설정
}따라서 Bubble 클래스는 생성자에서 Player 객체를 받아 캐릭터의 x, y 좌표를 물방울의 초기 위치로 설정합니다.
// 스페이스바를 눌렀을 때 물방울 생성
case KeyEvent.VK_SPACE:
    // 새로운 물방울 객체를 생성하고 플레이어 위치에 추가
    Bubble bubble = new Bubble(player);
    add(bubble); // JFrame에 물방울 추가
    break;(플레이어의 X, Y 위치값을 참조하므로, 캐릭터가 이동한 뒤에야 생성된 물방울이 화면에 나타납니다.)

- 게임 맵과 캐릭터 추가 https://inblog.ai/hj/sts-버블버블-게임-맵과-캐릭터-추가하기-33126
- 스레드 사용하여 이동하기 https://inblog.ai/hj/sts-버블버블-스레드-사용이동-33335
- 외벽 충돌 시 캐릭터 정지 https://inblog.ai/hj/sts-버블버블-외벽-충돌-시-캐릭터-정지-36946
- 캐릭터 업 다운 시키기 https://inblog.ai/hj/sts-버블버블-캐릭터-업-다운-38143
- 물방울 생성하기(기본셋팅)
Share article
