Skip to content

Latest commit

 

History

History
358 lines (271 loc) · 10.9 KB

README.md

File metadata and controls

358 lines (271 loc) · 10.9 KB

미션 - 보스 몬스터 잡기

🔍 진행방식

  • 미션은 기능 요구사항, 프로그래밍 요구사항, 과제 진행 요구사항 세 가지로 구성되어 있습니다.
  • 바톤 홈페이지에 글을 게시하면 리뷰어가 PR을 확인하고 코드리뷰를 진행할 예정입니다.
  • 세 개의 요구사항을 만족하기 위해 노력합니다. 기능을 완성시키지 못해도, 요구 사항을 만족시키지 못해도 괜찮습니다. 하지만 과제 진행 요구사항을 만족시키지 못하면 리뷰어께서 PR을 보지 못할 수도 있기 때문에 리뷰가 불가능할 수도 있습니다. 꼭! 제출 전에 확인 부탁드립니다😊

✉️ 미션 제출 방법

  • 미션 구현을 완료한 후 GitHub을 통해 Pull Request를 올립니다.
  • Github에 Pull Request를 제출한 후 바톤에 접속하여 글을 게시합니다.
  • 자세한 제출 방법은 바톤 미션 제출 문서 를 참고하시면 됩니다.
    • Pull Request만 보내고, 바톤 사이트에 게시하지 않는 경우에는 코드 리뷰를 도와드릴 수 없으므로 주의해주시면 감사하겠습니다.

✔️ 미션 제출 전 체크리스트

  • 터미널에서 맥 또는 리눅스 사용자의 경우 ./gradlew clean test, 윈도우 사용자의 경우 gradlew.bat clean test 명령을 실행했을 때 모든 테스트가 아래와 같이 통과하는지 확인합니다.
BUILD SUCCESSFUL in 0s

🚀 기능 요구사항

간단한 보스 몬스터 잡기 게임을 구현한다.

  • 보스 몬스터의 HP가 0이 되거나 플레이어의 HP가 0이 될 때까지 게임을 진행한다.
  • 플레이어 이름은 5자 이하만 가능하다.
  • 플레이어의 초기 HP와 MP 합은 200이다.
  • 보스 몬스터 초기 HP는 100이상 300이하이다.
  • 플레이어는 매 턴마다 보스 몬스터를 공격할 수 있다.
    • 물리 공격을 하면 보스 몬스터에게 10만큼의 데미지를 준다. (보스 몬스터의 HP가 10만큼 감소)
    • 마법 공격을 하면 보스 몬스터에게 20만큼의 데미지를 준다. (보스 몬스터의 HP가 20만큼 감소)
    • 마법 공격 시에는 MP 30이 소모된다.
    • 물리 공격 시에는 MP 10을 회복한다. 단, 최대치 이상의 MP는 회복할 수 없다.
  • 보스 몬스터도 매 턴마다 플레이어를 공격할 수 있다.
    • 0~20 의 랜덤 데미지를 플레이어한테 입힌다.
  • 공격은 플레이어가 먼저 한다.
    • 플레이어가 공격을 했을 때 보스 몬스터가 죽는다면, 보스 몬스터는 플레이어에게 피해를 입히지 못한다.
  • 플레이어나 보스 몬스터의 HP가 0이 되는 경우 게임이 끝난다.
  • 보스 몬스터가 죽으면 몇 턴 만에 잡았는지 출력한다.
  • 플레이어가 죽으면 보스 레이드 실패 메시지를 출력한다.
  • 사용자가 잘못된 값을 입력할 경우 IllegalArgumentException를 발생시키고, "[ERROR]"로 시작하는 에러 메시지를 출력 후 그 부분부터 입력을 다시 받는다.
  • 아래의 프로그래밍 실행 결과 예시와 동일하게 입력과 출력이 이루어져야 한다.

✍🏻 입출력 요구사항

⌨️ 입력

  • 보스 몬스터의 HP를 입력받는다.
100
  • 플레이어의 이름을 입력받는다.
dori
  • 플레이어의 HP, MP를 입력받는다.
100,100
  • 물리 공격, 마법 공격을 선택한다.
1

🖥 출력

  • 각 차수별 실행 결과
BOSS HP [300/300]
____________________________
   ^-^
 / 0 0 \
(   "   )
 \  -  /
  - ^ -
____________________________

dori HP [100/100] MP [50/50]

BOSS HP [280/300]
____________________________
   ^-^
 / x x \
(   "\  )
 \  ^  /
  - ^ -
____________________________

dori HP [80/100] MP [40/50]

  • 레이드 성공 안내 문구
dori 님이 20번의 싸움 끝에 보스 몬스터를 잡았습니다.
  • 예외 상황 시 에러 문구를 출력해야 한다. 단, 에러 문구는 [ERROR] 로 시작해야 한다. (예외 메시지는 예외 상황에 맞도록 자유롭게 정한다.)
[ERROR] 공격하셔야 합니다. 1 또는 2를 입력해주세요.

💻 프로그래밍 실행 결과 예시

[레이드 성공]
보스 몬스터의 HP를 입력해주세요.
100

플레이어의 이름을 입력해주세요
dori

플레이어의 HP와 MP를 입력해주세요.(,로 구분)
100,100

보스 레이드를 시작합니다!

============================
BOSS HP [100/100]
____________________________
   ^-^
 / 0 0 \
(   "   )
 \  -  /
  - ^ -
____________________________

dori HP [100/100] MP [100/100]
============================

어떤 공격을 하시겠습니까?
1. 물리 공격
2. 마법 공격
2

마법 공격을 했습니다. (입힌 데미지: 20)
보스가 공격 했습니다. (입힌 데미지: 0)

============================
BOSS HP [80/100]
____________________________
   ^-^
 / x x \
(   "\  )
 \  ^  /
  - ^ -
____________________________

dori HP [100/100] MP [70/100]
============================

어떤 공격을 하시겠습니까?
1. 물리 공격
2. 마법 공격
2

마법 공격을 했습니다. (입힌 데미지: 20)
보스가 공격 했습니다. (입힌 데미지: 15)

============================
BOSS HP [60/100]
____________________________
   ^-^
 / x x \
(   "\  )
 \  ^  /
  - ^ -
____________________________

dori HP [85/100] MP [40/100]
============================

어떤 공격을 하시겠습니까?
1. 물리 공격
2. 마법 공격
2

마법 공격을 했습니다. (입힌 데미지: 20)
보스가 공격 했습니다. (입힌 데미지: 15)

============================
BOSS HP [40/100]
____________________________
   ^-^
 / x x \
(   "\  )
 \  ^  /
  - ^ -
____________________________

dori HP [60/100] MP [10/100]
============================

어떤 공격을 하시겠습니까?
1. 물리 공격
2. 마법 공격
1

물리 공격을 했습니다. (입힌 데미지: 10)
보스가 공격 했습니다. (입힌 데미지: 10)

============================
BOSS HP [30/100]
____________________________
   ^-^
 / x x \
(   "\  )
 \  ^  /
  - ^ -
____________________________

dori HP [50/100] MP [20/100]
============================

어떤 공격을 하시겠습니까?
1. 물리 공격
2. 마법 공격
1

물리 공격을 했습니다. (입힌 데미지: 10)
보스가 공격 했습니다. (입힌 데미지: 10)

============================
BOSS HP [20/100]
____________________________
   ^-^
 / x x \
(   "\  )
 \  ^  /
  - ^ -
____________________________

dori HP [40/100] MP [30/100]
============================

어떤 공격을 하시겠습니까?
1. 물리 공격
2. 마법 공격
2

마법 공격을 했습니다. (입힌 데미지: 20)

dori 님이 6번의 전투 끝에 보스 몬스터를 잡았습니다.
[레이드 실패]
보스 몬스터의 HP를 입력해주세요.
300

플레이어의 이름을 입력해주세요
dori

플레이어의 HP와 MP를 입력해주세요.(,로 구분)
10,190

보스 레이드를 시작합니다!

============================
BOSS HP [300/300]
____________________________
   ^-^
 / 0 0 \
(   "   )
 \  -  /
  - ^ -
____________________________

dori HP [10/10] MP [190/190]
============================

어떤 공격을 하시겠습니까?
1. 물리 공격
2. 마법 공격
1

물리 공격을 했습니다. (입힌 데미지: 10)
보스가 공격 했습니다. (입힌 데미지: 16)

============================
BOSS HP [290/300]
____________________________
   ^-^
 / ^ ^ \
(   "   )
 \  3  /
  - ^ -
____________________________

dori HP [0/10] MP [190/190]
============================

dori의 HP가 0이 되었습니다.
보스 레이드에 실패했습니다.

🎱 프로그래밍 요구사항

  • 프로그램을 실행하는 시작점은 Applicationmain()입니다.
  • 자바 코드 컨벤션을 지키면서 프로그래밍 하시는 것을 추천드립니다.
  • indent(인덴트, 들여쓰기) depth를 3이 넘지 않도록 노력합니다. (2까지만 허용)
    • 예를 들어 while문 안에 if문이 있으면 들여쓰기는 2 입니다.
    • 힌트: indent(인덴트, 들여쓰기) depth를 줄이는 좋은 방법은 함수(또는 메소드)를 분리하면 됩니다.
  • 3항 연산자를 쓰지 않습니다.
  • 프로그래밍 요구사항에서 별도로 변경 불가 안내가 없는 경우 파일 수정과 패키지 이동을 자유롭게 할 수 있습니다.
  • 함수(또는 메소드)의 길이가 15라인을 넘어가지 않도록 노력합니다.
    • 함수(또는 메소드)가 한 가지 일만 하도록 최대한 작게 만들도록 노력합니다.
  • else 예약어를 쓰지 않으려 노력합니다.
    • 힌트: if 조건절에서 값을 return하는 방식으로 구현하면 else를 사용하지 않아도 됩니다.
    • else 대신에 switch/case를 사용하지 않도록 노력합니다.
  • 위의 조건들을 만족하지 못하더라도 괜찮습니다😊


📈 과제 진행 요구사항

  • 미션은 java-boss-monster 저장소를 Fork/Clone해 시작한다.
  • 기능을 구현하기 전에 java-boss-monster/docs/README.md 파일에 구현할 기능 목록을 정리하시면 코드 리뷰어가 리뷰하기 더 수월합니다😄
    • 리뷰이분들도 미리 구현할 것에 대해 생각해볼 수 있기 때문에 기능 목록을 작성하지 않는 것보다 더 꼼꼼하고 객체지향적으로 코드를 작성하실 수 있을 것 같습니다..
  • Git의 커밋 단위는 앞 단계에서 README.md 파일에 정리한 기능 목록 단위로 추가하는 것을 추천드립니다.
  • 미션 진행 및 제출 방법은 바톤 미션 제출 문서 를 참고한다.


📝 License

이 문제에 대한 저작권은 바톤에게 있습니다.