- 스프링을 통해 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턴은 두 캐릭터가 모두 한번 행동하면 지난다.
1턴 - knight, slime
2턴 - knight, slime
3턴 - knight, slime
...
식으로 진행된다. 즉, 서로 무조건 1번씩 번갈아가며 행동한다.
설계와 구현에 따라 엔드포인트, 경로 매개변수, request body, query string 등 다양하게 활용한다.
구현에 따라 response body 에 표현한다.