Skip to content

Latest commit

 

History

History
54 lines (45 loc) · 2.88 KB

2nd-spec.md

File metadata and controls

54 lines (45 loc) · 2.88 KB

2주차 미션코스

학습목표

  • 스프링을 통해 API 를 만들어보기

진행방식

  • 기존에 포크한 레포지토리를 pull 을 통해 업데이트하여 진행한다.
  • 포크한 레포지토리에서 자신의 깃허브 이름으로 된 브렌치를 만들어서 진행한다.
  • 아래 주어진 명세에 맞게 구현한다.
  • 주어지지 않은 내용은 스스로 판단하여 구현한다.

제출 방법

  • 자신의 이름으로 된 브렌치를 포크한 레포지토리의 main 브렌치에 PR을 날린다.

턴제 게임

진행 요구 사항

  • 기능 목록에 따라 커밋 혹은 브렌치를 나눈다.
    • 한번에 git add . 을 통해 커밋하는 것은 금지한다.
  • 이번 과제부터는 spring boot 을 사용한다.
    • build.gradle 을 수정하여 spring boot 관련 의존성을 설치하고 시작한다.
  • 1주차 미션코스의 코드를 재활용하여 진행한다.(코드 수정은 허용한다.)
  • 데이터베이스를 사용하지 않고, 메모리에서만 구동시킨다.

기능 요구 사항

  • 2명의 캐릭터는 서비스 시작시, 초기화된다. (즉, 코드상으로 값을 미리 지정해준다.)
  • 몇 턴 동안 진행하는지 또한 시작시 초기화된다.
    • 이름, 체력, 마나
  • 아래 기능을 수행하는 API 를 설계하고, 구현한다.(모두 json 형식으로 진행한다.)
  • 지정한 캐릭터의 현재 상태를 알려준다.
  • 지정한 캐릭터가 현재 가능한 행동들을 알려준다.
    • 이때, 스킬은 기준에 따라 이름순, 혹은 남은 쿨타임 순으로 정렬한다.(query string 사용한다)
    • 몇턴 남았는지 또한 표시해준다.
  • 1주차에 구현한 공격과 스킬들을 실행하고, 그에 따른 데미지 혹은 감소시킨 데미지(방어)의 수치를 반환한다.
    • 아래는 1주차의 공격과 스킬 기능이다.
      • 공격은 매턴, 마나 소모 없이 할 수 있으며, 상대에게 1~10 사이의 랜덤한 데미지를 입힌다.
      • 방어는 매턴, 마나 소모 없이 할 수 있으며, 상대의 데미지를 한번 1~10 사이의 랜덤한 숫자만큼 감소시킨다.
      • 스킬은 한번 사용시 일정한 턴이 지나야 사용할 수 있으며, 마나를 소모한다.
      • 스킬은 마나 * (1 ~ 10 사이의 랜덤한 숫자) 의 데미지를 입힌다.

추가사항

지난 과제에서 턴의 설명이 모호하여 부연 설명을 한다.
1턴은 두 캐릭터가 모두 한번 행동하면 지난다.
1턴 - knight, slime
2턴 - knight, slime
3턴 - knight, slime
...
식으로 진행된다. 즉, 서로 무조건 1번씩 번갈아가며 행동한다.

입력

설계와 구현에 따라 엔드포인트, 경로 매개변수, request body, query string 등 다양하게 활용한다.

출력

구현에 따라 response body 에 표현한다.