---
# System prepended metadata

title: 게임 첫 화면

---

https://hackmd.io/@kzbnCiprQGuGjNbYFN4CFQ/r13I_W6PO
# 게임 첫 화면
![](https://i.imgur.com/lEYRO4f.png)
![](https://i.imgur.com/CotIHIb.png)
* 참가할 수 있는 게임목록. 원하는 팀을 선택한다?
    * 게임목록 조회
    * 팀 선택기능
* 참가할 수 있는 게임목록이 있다

![](https://i.imgur.com/hlVGAzU.png)
* 게임별로 상대팀이 떠야함. 홈팀(좌측) 원정팀(우측)
    * 게임별로 팀 조회기능
    * 홈, 원정 여부에 따라 좌우측 결정됨

![](https://i.imgur.com/OrAEWtI.png)
* 팀 관련 기능 -호버
    * 팀 이름에 마우스 호버하면 색 전환되어야 함
* 팀 관련 기능 -클릭
* 팀 이름 클릭하면 게임 진행화면으로 이동해야 함
    * 게임진행화면?
    * 화면별로 구분할 수 있어야겠다.
# 게임 첫 화면
### 기능 분석
* 로그인 기능의 필요성 : 일단 없을 것으로 생각됨!
    * 처음엔 Mockup api만 있다
    * 근데 첨부터 로그인 기능을 구현하기엔 시간이 넘 많이 걸림
    * 그러니 일단 가짜 로그인기능을 구현한다
* 유저 식별은 왜 필요할까? : 일단 필요 없다!
    * 팀별 게임이니까 팀 구분만 하면 되지 않을까?
    * 팀 선점 여부는 T/F만 구분하면 되니 로그인 기능은 아직 필요 없을 것 같다.

* 팀 선점 기능
    * 선택후에 T/F 선점 여부만 관리한다.

* 초기 팀 상태?
    * 하드코딩한다
    * 넉넉하게 6팀정도 만들어두자!
* 내가 원하는 팀 선택?
    * 나 vs 컴퓨터
    * 내가 트윈스를 선택-> 컴이 타이거가 됨
* 선점되있었다면? 어케 처리?
    * 누가 선택했어요 다른 팀 선택해주세요~ 하고 알려줘야 함
    * 4번 부분![](https://i.imgur.com/701cEuE.png)
    * 요게 수정되어야 함
* 게임 개수는 우리가 원하는대로 정한다
* 게임 첫화면에서 나온 용어?
    * 홈팀? 원정팀? : home, away
        * 원정팀이 초회공격한다고 함

    * ![](https://i.imgur.com/3ylL2zR.png)

# 게임 진행(수비) 화면
### 등장하는 객체
* 점수![](https://i.imgur.com/hgMeDkh.png)

* 현재 필드에 등장한 투수와 타자![](https://i.imgur.com/qzkEiIL.png)

* 1,2,3루 상태![](https://i.imgur.com/Au3iOD0.png)

* 스트라이크, 볼, 아웃 상태![](https://i.imgur.com/9ESIiBr.png)

* 히스토리?![](https://i.imgur.com/wUSWGdo.png)

* Pitch 버튼![](https://i.imgur.com/7TAF1gm.png)
    * 투수가 공을 던지는 버튼
    * 이걸로 게임이 진행
    * 판정하는기능 : 피치 버튼 누르면 요청하고, 결과를 서버에서 계산하고 클라한테 응답해준다.

### API
1. 최초 화면 로딩 - 게임목록조회 GET
2. 게임 선택 - 게임 참여하기 요청 PUT
3. 409 -> 다시 선택 
4. 200 OK -> 게임 시작 페이지로 넘어감 
5. 시작 페이지 - 게임상태정보 조회하기 GET 
   //여기서도 점수, 명단정보 필요
6. PITCH - 피치하기 PUT


1. 클라가 서버한테 스트라이크인지 볼인지 안타인지 여부를 물어봄
2. 서버가 클라한테 어떤게 걸렸는지 알려줌
3. 클라가 서버한테 어떤게 걸렸다고 알려줌
4. 서버는 받은 정보를 가지고 상태를 바꿈(삼진이니까 아웃 추가라던가)

* 승패가 안갈렸을때
```json
{
   "resultType" : 0,
   "pitchResult" : {
       "result": "strike",
        "strikeCount": 2,
        "ballCount": 3,
        "outCount": 1,
        "homeTeamScore": 1,
        "awayTeamScore": 5,
        "currentHitter": "류현진",
        "nextHitter": "류현진",
        "currentPitcher": "최동원"
   },
   "detailScoreInfo" : {...},
   "playerInfo" : {...},
}
```
* 승패가 갈렸을때
```json
{
   "resultType" : 1,
   "winner" : "home | away"
}
```

* url : PUT /games/:gameId
* Response
```json
{
    "pitchResult" : "strike",
    "strikeCount" : 2,
    "ballCount" : 3,
    "outCount" : 1,
    "homeTeamScore" : 1,
    "awayTeamScore" : 5,
    "currentHitter" : "류현진",
    "currentPitcher" : "최동원"
}
```
* result는 `"strike | ball | strikeOut | 4ball | hits | flyOut"`중 하나로 한다.

* ![](https://i.imgur.com/UFLQfqS.png)
    * 
