[JAVA] Java Application 프로젝트 - 지우를 피해라

홍예주·2021년 4월 30일
0

1. 개요

2018.03~2018.06까지 진행한 Java 프로젝트이다.
자바 GUI를 이용한 게임 제작 팀 프로젝트로, 총 4명이서 진행했다.
나는 팀장 및 개발자 역할로 참여했다.

2. 기획

1) 구현 목표

  • 깊지 않은 상속 구조

  • 인터페이스 활용을 통한 다형성 구현

  • 접근제한자를 활용한 정보은닉(캡슐화)

  • 스레드를 활용한 게임 흐름 제어

  • Model과 View의 분리를 통한 MVC모델 구현


2) 게임 방식

  • 초기화면

  • 플레이 화면

    1. Player는 Monster와 Obstacle을 피해야한다.
    2. 앞으로 움직이다가 Monster와 Obstacle을 만나면 게임오버.
    3. Jump를 통해 반대편에 있는 Monster를 제거할 수 있다.
    4. Monster를 제거하면 count(점수)가 올라간다.
    5. Debuff 아이템을 먹으면 Player의 speed상승
    6. Buff 아이템을 먹으면 Player의 speed감소
    7. 4개의 캐릭터별로 Skill이 존재한다.
    8. 쿨 타임이 지나면 캐릭터의 Skill을 사용할 수 있다.

  • 결과 화면


3) 전체 UML



  • 2계층 상속 구조
  • 추상클래스 & 인터페이스 활용
  • Has-a 관계

3. 구현

1) 플레이어 생성

  • 생성을 위해서 위치 지정을 미리 해둠
  • 싱글톤(Singleton)으로 구현

    (원판에서 18도씩 20개의 위치 미리 지정)
  • 플레이어 생성자
  • 플레이어의 체력, 속도, 점수를 초기화
  • Player 하위 캐릭터들 클래스가 상속 받아서 사용한다.

2) 플레이어 이동

  • move interface

  • jump interface

3) 플레이어 - object 충돌

  • 충돌 확인

  • 충돌 실행

4) 플레이어 스킬 구현

  • 각각의 하위 캐릭터 클래스에서 구현했다.
  • 3개의 스킬은 각 캐릭터의 고유 스킬이다.

5) 플레이어 외 객체 생성

  • 장애물, 몬스터, 아이템 생성
  • 해당 코드는 장애물 생성코드
  • 몬스터와 아이템도 같은 원리를 이용해 생성

6) Controller

  • Thread를 이용해 플레이어 캐릭터 및 기타 오브젝트 생성을 관리했다.
  • Thread를 이용한 이유 : 캐릭터 이동, 점프, 스킬사용, 체력 바 변화는 모두 독립적으로 시행되어야 하기 때문에 thread를 이용해 구현했다.


  • controller 중 thread를 이용해 구현되는 부분

7) DB

  • 랭킹 시스템과 랭킹 시스템에 사용할 사용자 로그인 정보를 위해 DB를 이용했다.
  • DB에는 사용자 ID, password, 사용자 기록이 들어가게 된다.

4. 시연

profile
기록용.

0개의 댓글