JAVA - 15

Date:     Updated:

카테고리:

태그:

img

SnakeGame.Framejava

  1. SnakeGameFrame 클래스:
    • JFrame을 상속받은 클래스로, 게임 창을 생성합니다.
    • GroundPanel 객체를 게임 창의 콘텐트 팬으로 설정합니다.
    • 스네이크 게임을 실행하는 스레드인 snakeThread를 생성하고 시작합니다.
  2. GroundPanel 클래스:
    • JPanel을 상속받은 내부 클래스로, 게임 판을 표시합니다.
    • 게임 판의 크기와 배경 이미지를 설정합니다.
    • SnakeBody 객체를 생성하고 판에 추가합니다.
    • 키 이벤트를 처리하기 위한 MyKeyListener 클래스를 정의하고 등록합니다.
    • 게임 루프를 실행하는 run() 메서드를 구현합니다. 일정 시간마다 스네이크의 움직임을 처리합니다.
  3. SnakeBody 클래스:
    • 스네이크의 몸통을 나타내는 클래스입니다.
    • Vector<JLabel>을 사용하여 JLabel 객체들을 저장합니다.
    • 스네이크의 초기 위치와 몸통을 생성하고 판에 추가하는 addIn() 메서드를 구현합니다.
    • 스네이크의 이동을 처리하는 move() 메서드를 구현합니다. 몸통의 각 부분을 이전 부분의 위치로 이동시킵니다.
Image description

MonsterGameFrame.java

  1. MonsterGameFrame 클래스:
    • JFrame을 상속받은 클래스로, 게임 창을 생성합니다.
    • GamePanel 객체를 게임 창의 콘텐트 팬으로 설정합니다.
  2. GamePanel 클래스:
    • JPanel을 상속받은 내부 클래스로, 게임 판을 표시합니다.
    • 아바타와 괴물을 나타내기 위해 JLabel 컴포넌트를 사용합니다.
    • 키 이벤트를 처리하기 위한 MyKeyListener 클래스를 정의하고 등록합니다.
    • 괴물을 움직이는 스레드인 MonsterThread를 생성하고 시작합니다.
    • 키 입력에 따라 아바타의 위치를 이동시키고, 아바타와 괴물의 위치를 갱신합니다.
  3. MyKeyListener 클래스:
    • KeyAdapter를 상속받은 내부 클래스로, 키 이벤트를 처리합니다.
    • 키 입력에 따라 아바타의 위치를 변경합니다.
    • ‘q’ 키가 입력되면 프로그램을 종료합니다.
  4. MonsterThread 클래스:
    • Thread를 상속받은 내부 클래스로, 괴물을 움직이는 스레드입니다.
    • 괴물(from 레이블)과 아바타(to 레이블)의 위치를 비교하여 괴물이 아바타를 추적합니다.
    • 일정 간격으로 괴물의 위치를 변경하고, 패널을 다시 그려줍니다.
Image description

SnowFrame.java

SnowFrame 클래스는 JFrame을 상속하여 프레임을 생성하고 초기화하는 역할을 합니다. 프레임의 제목을 설정하고, 콘텐트 팬으로 SnowPanel을 설정합니다. 그리고 프레임의 크기를 설정하고, 크기 조절을 비활성화하며, 가시성을 설정합니다.

SnowPanel 클래스는 JPanel을 상속하여 눈이 내리는 마을을 그리는 역할을 합니다. 내부에는 Image 객체를 생성하여 배경 이미지를 설정하고, 눈의 개수와 크기를 설정하는 변수들이 있습니다. 또한, 눈의 위치를 저장하는 snowVector 벡터가 있습니다.

SnowPanel의 생성자에서는 addComponentListener를 사용하여 패널의 위치와 크기가 설정되면 눈을 만드는 작업을 수행합니다. addSnow() 메서드를 호출하여 각 눈의 위치를 랜덤하게 생성하고 snowVector에 추가합니다. 그리고 SnowThread 스레드를 시작하여 눈이 내리는 애니메이션을 시작합니다.

paintComponent() 메서드에서는 img 변수에 저장된 배경 이미지를 그립니다. 그리고 drawSnow() 메서드를 호출하여 눈을 그립니다. drawSnow() 메서드는 snowVector에 저장된 눈의 위치를 이용하여 눈을 그리는 작업을 수행합니다.

changeSnowPosition() 메서드는 눈의 위치를 조정하는 역할을 합니다. 각 눈에 대해서 랜덤한 방향과 거리를 지정하여 위치를 이동시킵니다. 만약 눈이 패널을 벗어나게 되면 다시 패널의 위에서 시작하도록 설정합니다.

SnowThread 클래스는 눈이 내리는 애니메이션을 담당하는 스레드입니다. 주기적으로 눈의 위치를 재조정하고, 패널을 다시 그리는 작업을 반복합니다.

main() 메서드에서는 SnowFrame 객체를 생성하여 프로그램을 실행합니다.

Image description

java 카테고리 내 다른 글 보러가기

댓글 남기기