November-22 / prgrms-web-backend-14

백엔드 분야에 대한 발표 및 북 스터디 모임
3 stars 0 forks source link

숫자야구 구현 #15

Open chicori3 opened 1 year ago

chicori3 commented 1 year ago

숫자야구 게임 기본 규칙

  1. 1~9 사이 중복되지 않는 3자리 숫자를 임의로 정한다.
  2. 플레이어는 3자리 숫자를 불러서 결과를 확인한다.
    1. 숫자는 맞지만 위치가 틀렸을 때는 볼
    2. 숫자와 위치가 전부 맞으면 스트라이크
    3. 숫자와 위치가 전부 틀리면 아웃
baseball
숫자 야구 게임 API 구현

제한 사항
답변은 최대 10번까지만 할 수 있다
답변 횟수가 최대치를 넘거나, 정답을 맞추는 경우 게임이 종료된 걸로 한다
room id가 발급되고, 중복되지 않는 1-9 사이의 세 숫자가 정답으로 저장이 되어있어야 함

구현 API
게임 시작 (POST, /game/start)
response
{
    "success": true,
    "data": {
    "roomId": 123
    }
}

게임 진행 (POST /game/123/answer)
request
{    
    "answer": "345"
}

response(게임 종료가 아닐 시)
{
    "success": true,
    "data": {
    "correct": true, // false
    "remainingCount": 8,
    "strike": 3,
    "ball": 0,
    "out": 0
    }
}

resopnse(게임 종료 시)
{
    "success": false,
    "data": null,
    "error": {
    "code": "CLOSED_GAME",
    "message": ""
    }
}

게임 결과 (GET /game/123)
response
{
    "success": true,
    "data": {
    "remainingCount": 8,
    "answerCount": 2
    }
}

게임 진행 기록 (GET /game/123/history)
response
{    
    "success": true,
    "data": {
        histories: [
            {
                "answer": "123",
                "result": {
                    "strike": 0,
                    "ball": 0,
                    "out": 3
                }
            },
            {
                "answer": "456",
                "result": {
                    "strike": 0,
                    "ball": 2,
                    "out": 1
                }
            }
        ]
    }
}
kimgun95 commented 1 year ago

게임 종료시라는 응답이 어떤 요청에 대한 건지를 모르겠네요...?

chicori3 commented 1 year ago

나가기 요청은 없고 게임은 제한된 10번의 기회동안 맞추거나 기회를 다 쓸 경우 게임 종료입니다

kkangmj commented 1 year ago

예시에서 답이 345일 때, 게임 진행 기록 response의 answer 123의 result는 1 ball, 2 out이어야 하지 않나요??

chicori3 commented 1 year ago

roomId 는 게임 방 아이디고 answer 는 내가 던진 숫자야구 정답입니다

kkangmj commented 1 year ago

roomId 는 게임 방 아이디고 answer 는 내가 던진 숫자야구 정답입니다

네 그건 이해했는데 답이 345 아닌가요? 답이 345일 때 answer: 123을 던지면 1 ball, 2 out 이라고 생각해서요.

chicori3 commented 1 year ago

roomId 는 게임 방 아이디고 answer 는 내가 던진 숫자야구 정답입니다

네 그건 이해했는데 답이 345 아닌가요? 답이 345일 때 answer: 123을 던지면 1 ball, 2 out 이라고 생각해서요.

답이 345고 answer : 123을 던지면 1 ball 2 out이 맞죠 근데 질문 의도를 잘 모르겠네요

kkangmj commented 1 year ago

예제에 오류가 있어 헷갈렸습니다. 답변 감사합니다.