Skip to content

green-kong/oop-test-2-rpc

Repository files navigation

왕과 노예

🔍 진행방식

  • 기능을 구현하기 전에 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라인을 넘어가지 않도록 구현한다.
    • 함수(또는 메소드)가 한 가지 일만 잘 하도록 구현한다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published