Skip to content

9osari/card_game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

카드 게임 요구사항 정리

요구사항

카드 정보

카드(Card)는 1 ~ 13까지 있다. 각 번호당 다음 4개의 문양이 있다.

  • ♠: 스페이드
  • ♥: 하트
  • ♦: 다이아몬드
  • ♣: 클로버

예시: 1(♠), 1(♥), 1(♦), 1(♣), 2(♠), 2(♥), 2(♦), 2(♣) ... 13(♠), 13(♥), 13(♦), 13(♣)

따라서 13 × 4 = 총 52장의 카드가 있다.

덱과 플레이어

  • 52장의 카드가 있는 카드 뭉치를 **덱(Deck)**이라 한다.
  • **2명의 플레이어(Player)**가 게임을 진행한다.

게임 진행 순서

  1. 덱에 있는 카드를 랜덤하게 섞는다.
  2. 각 플레이어는 덱에서 카드를 5장씩 뽑는다.
  3. 각 플레이어는 5장의 카드를 정렬된 순서대로 보여준다.
    • 정렬 기준:
      • 작은 숫자가 먼저 나온다.
      • 같은 숫자의 경우 ♠, ♥, ♦, ♣ 순으로 정렬한다. ♠가 가장 먼저 나온다.
    • 예시: 1(♠), 1(♥), 2(♦), 3(♣) 순서로 출력
  4. 카드 숫자의 합계가 큰 플레이어가 승리한다.
    • 게임을 단순화하기 위해 숫자만 계산한다.
    • 합계가 같으면 무승부이다.

실행 결과 예시

플레이어1의 카드: [2(♠), 7(♥), 7(♦), 8(♣), 13(♠)], 합계: 37
플레이어2의 카드: [1(♠), 1(♣), 6(♠), 9(♠), 9(♣)], 합계: 26
플레이어1 승리
플레이어1의 카드: [2(♦), 3(♠), 6(♥), 10(♣), 13(♦)], 합계: 34
플레이어2의 카드: [2(♠), 4(♣), 5(♠), 11(♣), 12(♥)], 합계: 34
무승부

패턴 유니코드

"\u2660" // 스페이드(♠)
"\u2665" // 하트(♥)
"\u2666" // 다이아몬드(♦)
"\u2663" // 클로버(♣)

클래스 설계

1. Card 클래스

  • 역할: 카드 한 장을 표현
  • 속성:
    • int num: 카드 번호 (1~13)
    • String pattern: 카드 패턴 ("Spade", "Heart", "Diamond", "Club")
  • 주요 메서드:
    • toString(): 카드를 "7(♥)" 형태로 출력
    • compareTo(): 카드 정렬을 위한 비교 (Comparable 구현)
    • getPattern(): 패턴을 숫자로 변환 (정렬 기준)

2. Deck 클래스

  • 역할: 52장 카드 뭉치 관리
  • 속성:
    • List<Card> cards: 52장의 카드 저장
  • 주요 메서드:
    • 생성자: 52장 카드 자동 생성
    • cardShuffle(): 카드 섞기
    • draw(): 카드 한 장 뽑기
    • size(): 남은 카드 개수 확인

3. Player 클래스

  • 역할: 플레이어와 손에 든 카드 관리
  • 속성:
    • String name: 플레이어 이름
    • List<Card> hand: 손에 든 카드들 (5장)
  • 주요 메서드:
    • receiveCard(): 카드 받기
    • sortHand(): 손에 든 카드 정렬
    • calculateSum(): 카드 합계 계산
    • showHand(): 카드 출력

4. Game 클래스

  • 역할: 전체 게임 진행 관리
  • 주요 메서드:
    • start(): 게임 시작
    • dealCards(): 카드 나눠주기
    • determineWinner(): 승부 판정
    • displayResult(): 결과 출력

✅ 완성된 부분

  • Card 클래스 완전 구현
  • Deck 클래스 완전 구현
  • Player 클래스 완전 구현
  • Referee 클래스 완전 구현
  • 기본 동작 테스트 완료

🚧 진행 중인 부분

  • ENUM 도입

About

카드 게임을 구현하며 객체지향 프로그래밍(OOP) 실습

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages