YeaLow
article thumbnail

 

버블버블 좌우 이동

https://m.blog.naver.com/simba222/222568605931

 

이클립스에서 java.awt import 안될때

체크를 풀면 됨.

blog.naver.com

Java AWT 안될때 설정. ex) addKeyListener ,  KeyAdapter 메서드 호출 안될때 확인

 

 


나의 2번째 센세이자 내 조그마한 자바실력을 향상 시켜주는

메타코딩 선생님 매일 절하겠습니다. (-..-) (_ _)

 

 

ex02로 해도 되지만 선생님이 03 만들길래

package bubble.test.ex03;

import javax.swing.ImageIcon;
import javax.swing.JLabel;

// class player -> new 가능한 애들!! 게임에 존재할 수 있음. (추상메서드를 가질 수 없다.)
public class Player extends JLabel implements Moveable { // player 자체가 label이다

	// 위치 상태
	private int x;
	private int y;
	
	// 움직임 상태
	private boolean left;
	private boolean right;
	private boolean up;
	private boolean down;
	
	

	private ImageIcon playerR, playerL;

	public Player() {
		initObject();
		initSetting();

	}

	private void initObject() {
		playerR = new ImageIcon("image/playerR.png"); // 이미지 ImageIcon에 사진 추가
		playerL = new ImageIcon("image/playerL.png");
	}

	private void initSetting() { // 기본 시작 위치
		x = 55;
		y = 535;
		
		// 최초 상태 -> 움직인다 (좌표가 이동한다)
		// 키보드 오른쪽을 누른다 ->  오른쪽으로 간다 
		left = false;
		right = false;
		up = false;
		down = false;
		
		setIcon(playerR);
		setSize(50, 50);
		setLocation(x, y);
	}

	@Override
	public void left() {
		setIcon(playerL); //왼쪽으로 갈때는 왼쪽 이미지
		x = x - 10; // x축 10만큼 - 이동
		setLocation(x, y);
	}

	@Override
	public void right() {
		setIcon(playerR); //왼쪽으로 갈때는 오른쪽 이미지
		x = x + 10; // x축 10만큼 +이동
		setLocation(x, y);
	}

	@Override
	public void up() {

	}

	@Override
	public void down() {

	}

}

추가된것만 넣자니 너무 힘들다.. 볼사람만 봐쓰면 좋겟다.. 마무리는 끝에 다 적용해서 넣겠습니다. 주석도 그대로 둠

 

위치상태를 추가 + 메서드 생성

 

Moveable 인터페이스 생성

 

package bubble.test.ex03;

public interface Moveable {
	public abstract void left();
	public abstract void right();
	public abstract void up();
	public abstract void down();
}

인터페이스로 위치 상태에 대한 추상 메서드 만듬

 

BubbleFrame.java

package bubble.test.ex03;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class BubbleFrame extends JFrame {

	private JLabel backgroundMap;

	private Player player;

	public BubbleFrame() { // 생성자 만들기
		initObject();
		initSetting();
		initListener(); // listener 추가
		setVisible(true);
	}

	private void initObject() {
		backgroundMap = new JLabel(new ImageIcon("image/backgroundMap.png")); // label 안에 이미지 넣음
		setContentPane(backgroundMap);
//		backgroundMap.setSize(100,100);
//		backgroundMap.setLocation(300,300);
//		backgroundMap.setSize(1000,600);
//		add(backgroundMap);// JFrame에 JLabel이 그려진다.

		player = new Player(); // Player함수를 호출하여 BubbleFrame에 추가한다
		add(player);
	}

	private void initSetting() {
		setSize(1000, 640);
		setLayout(null);// absolute 레이아웃 (자유롭게 그림을 그릴 수 있다.)
		setLocationRelativeTo(null); // JFrame 가운데 배치하기
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // x버튼으로 창을 끌 때 JVM 같이 종료 하기
	}

	private void initListener() {
		addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				System.out.println(e.getKeyCode()); //  실행하여 방향키를 입력해본다
				// 39 오른쪽    
				// 37 왼쪽				숫자로 표현하면 알아보기 힘들다  KeyEvent.VK_ 를 활용하여 알기 쉽게 한다
				// 40 밑
				// 38 위
				
				switch (e.getKeyCode()) {
				case KeyEvent.VK_LEFT:
					player.left();
					break;
				case KeyEvent.VK_RIGHT:
					player.right();
					break;
				case KeyEvent.VK_UP:
					player.up();
					break;
//				case KeyEvent.VK_DOWN: 떨어지거나 할때 사용하는데 따로 down키를 눌릴 일이 없다
//					player.down(); 
//					break;
				}
			}
			//람다식으로 Interface를 가져올시 전부 기능을 정의 해야함 하지만 Adapter를 사용해서 정의가 가능하다 
			
		});
	}

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

	}
}

밑 16진수 코드 참조

 /**
     * Constant for the non-numpad <b>left</b> arrow key.
     * @see #VK_KP_LEFT
     */
    public static final int VK_LEFT           = 0x25; 	// 16진수 왼쪽

    /**
     * Constant for the non-numpad <b>up</b> arrow key.
     * @see #VK_KP_UP
     */
    public static final int VK_UP             = 0x26; 	// 16진수 위

    /**
     * Constant for the non-numpad <b>right</b> arrow key.
     * @see #VK_KP_RIGHT
     */
    public static final int VK_RIGHT          = 0x27;	// 16진수 오른쪽

    /**
     * Constant for the non-numpad <b>down</b> arrow key.
     * @see #VK_KP_DOWN
     */
    public static final int VK_DOWN           = 0x28;	// 16진수 밑
    
    0x25 37 = 16x2 + 5 =37

 

디스코 추는 버블이(?) 만들기 완료!

버블버블 좌우 이동

 

'Java' 카테고리의 다른 글

버블이(?)가 달라졌어요  (0) 2022.10.06
버블버블 etc - 이벤트 리스너 원리  (0) 2022.10.06
버블버블 - 4 게임맵 캐릭터 추가  (0) 2022.10.04
버블버블 - 3 Frame 설정  (0) 2022.10.04
버블버블 - 2 (환경 설정)  (0) 2022.10.04
profile

YeaLow

@YeaLow

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!