- 기능을 구현하기 전에
docs/README.md
에 기능 목록을 만들고, 기능 단위로 커밋 하는 방식으로 진행한다.
왕
과 노예
, 두개의 진영이 맞붙는 카드게임입니다.
두명의 플레이어가 하나씩 진영을 선택하면, 진영에 맞는 카드를 4장 부여 받습니다.
- 왕 진영
- 시민 * 3
- 왕 * 1
- 노예 진영
- 시민 * 3
- 노예 * 1
게임은 최대 5라운드 까지 진행되며, 매 라운드 마다 각 플레이어는 한장의 카드를 제출합니다. 제출 된 카드는 4가지의 경우의 수가 존재합니다.
- 시민 vs 시민 : 무승부
- 왕 vs 시민 : 왕의 승리
- 노에 vs 시민 : 시민의 승리
- 노예 vs 왕 : 노예의 승리
한번 사용된 카드는 다시 사용할 수 없으며, 승패가 결정된 즉시 해당 판은 종료 됩니다.
-
사용자는 플레이어의 소지금을 입력할 수 있다.
- 소지금은 100원 단위로 제한한다.
- 소지금은 항상 0보다 크거나 같아야 한다.
-
게임은 총 3판으로 진행되고, 각 판은 최대 5라운드로 진행된다.
-
사용자는 매 판마다 진영을 선택할 수 있다.(왕 || 노예)
-
사용자는 매 판마다 배팅금액을 입력한다.
- 배탱 금액 만큼 소지금에서 차감 된다.
- 왕의 진영을 선택하고 게임에서 이길 경우 배팅금액의 2배를 돌려 받는다.
- 노예 진영을 선택하고 게임에서 이길 경우 배팅금액의 10배를 돌려 받는다.
-
사용자와 상대방(컴퓨터)는 매 판마다 5장의 카드를 받는다.
- 다섯장의 카드 중 4장은 시민, 나머지 한장은 각 진영의 대표 카드이다.(왕 || 노예)
-
사용자는 매 라운드마다 낼 카드를 선택한다.
-
상대방(컴퓨터)는 매 라운드마다 제시할 카드를 랜덤으로 선택한다.
-
매 라운드가 종료 될 때마다 라운드의 결과를 출력한다.
-
라운드의 결과가
draw
인 경우 다음 라운드를 진행하고, 승패가 갈린 경우는 다음 판으로 넘어간다. -
매 판이 종료된 시점에 사용자의 소지금이 100원 미만인 경우 게임은 즉시 종료된다.
-
모든 판이 종료되면 사용자의 최종 소지금과 사용자의 승리 횟수를 출력한 뒤 종료한다.
-
사용자가 잘못된 값을 입력하는 경우
[ERROR]
로 시작하는 메시지를 출력한 뒤, 잘못 입력된 입력부터 다시 받는다.
왕과 노예 게임을 시작합니다.
플레이어의 소지금을 입력해주세요.
100000
플레이어의 진영을 선택해주세요 (king | slave)
slave
배팅금액을 입력해주세요.(왕 진영 : 2배, 노예 진영 : 10배)
30000
제출할 카드를 입력해주세요. (왕 | 노예 : joker, 시민 : normal)
normal
---------- 결과 ----------
플레이어 카드 : citizen
컴퓨터 카드 : citizen
결과 : draw
플레이어 현재 보유 금액 : 70000
--------------------------
제출할 카드를 입력해주세요. (왕 | 노예 : joker, 시민 : normal)
normal
---------- 결과 ----------
플레이어 카드 : citizen
컴퓨터 카드 : citizen
결과 : draw
플레이어 현재 보유 금액 : 70000
--------------------------
제출할 카드를 입력해주세요. (왕 | 노예 : joker, 시민 : normal)
joker
---------- 결과 ----------
플레이어 카드 : slave
컴퓨터 카드 : king
결과 : win
플레이어 현재 보유 금액 : 370000
--------------------------
플레이어의 진영을 선택해주세요 (king | slave)
king
배팅금액을 입력해주세요.(왕 진영 : 2배, 노예 진영 : 10배)
100000
제출할 카드를 입력해주세요. (왕 | 노예 : joker, 시민 : normal)
joker
---------- 결과 ----------
플레이어 카드 : king
컴퓨터 카드 : citizen
결과 : win
플레이어 현재 보유 금액 : 470000
--------------------------
플레이어의 진영을 선택해주세요 (king | slave)
king
배팅금액을 입력해주세요.(왕 진영 : 2배, 노예 진영 : 10배)
100000
제출할 카드를 입력해주세요. (왕 | 노예 : joker, 시민 : normal)
joker
---------- 결과 ----------
플레이어 카드 : king
컴퓨터 카드 : citizen
결과 : win
플레이어 현재 보유 금액 : 570000
--------------------------
========== 최종 결과 ==========
승리 횟수 : 3
최종 보유 금액 : 570000
왕과 노예 게임을 시작합니다.
플레이어의 소지금을 입력해주세요.
100000
플레이어의 진영을 선택해주세요 (king | slave)
slave
배팅금액을 입력해주세요.(왕 진영 : 2배, 노예 진영 : 10배)
30000
제출할 카드를 입력해주세요. (왕 | 노예 : joker, 시민 : normal)
normal
---------- 결과 ----------
플레이어 카드 : citizen
컴퓨터 카드 : citizen
결과 : draw
플레이어 현재 보유 금액 : 70000
--------------------------
제출할 카드를 입력해주세요. (왕 | 노예 : joker, 시민 : normal)
normal
---------- 결과 ----------
플레이어 카드 : citizen
컴퓨터 카드 : citizen
결과 : draw
플레이어 현재 보유 금액 : 70000
--------------------------
제출할 카드를 입력해주세요. (왕 | 노예 : joker, 시민 : normal)
joker
---------- 결과 ----------
플레이어 카드 : slave
컴퓨터 카드 : king
결과 : win
플레이어 현재 보유 금액 : 370000
--------------------------
플레이어의 진영을 선택해주세요 (king | slave)
king
배팅금액을 입력해주세요.(왕 진영 : 2배, 노예 진영 : 10배)
100000
제출할 카드를 입력해주세요. (왕 | 노예 : joker, 시민 : normal)
king
[ERROR] 유효하지 않은 옵션입니다.
제출할 카드를 입력해주세요. (왕 | 노예 : joker, 시민 : normal)
joker
// 이하 동일
typescript
를 사용한다.- 외부 라이브러리는 사용하지 않는다. (npm dependency 추가 금지)
- indent(인덴트, 들여쓰기) depth를 3이 넘지 않도록 구현한다. 2까지만 허용한다.
- 함수(또는 메소드)가 한 가지 일만 하도록 최대한 작게 만들어라.
- 함수(또는 메소드)의 길이가 15라인을 넘어가지 않도록 구현한다.
- 함수(또는 메소드)가 한 가지 일만 잘 하도록 구현한다.