[JAVA] 66. 포커 게임

문정준's avatar
Feb 19, 2025
[JAVA] 66. 포커 게임

포커 게임

  • 컬렉션을 이용하여 포커 게임을 구현하시오.
 

문제 분석

  • 카드 숫자 종류 : A(1) ~ K(13), A > K > Q > J > 10 ~ 2
  • 카드 그림 종류 : 스페이드 > 다이아 > 하트 > 클로버
  • 카드 저장 : Deck
    • ArrayList() 사용
  • 카드 섞기 : shuffle()
  • 게임 진행 : 텍사스 홀덤 룰 사용
    • n명의 플레이어에게 카드 2장 배분 후 베팅 (베팅은 스킵)
    • 공개 카드 3장 오픈 후 베팅
    • 공개 카드 1장 오픈 후 베팅
    • 공개 카드 1장 오픈 후 최종 베팅, 패 공개
    • 족보는 값을 비교해야 하는 테이블이 필요하므로 제외
 

코드 작성

package ex18; // 플레이어 정보 : 현재 코드에서는 플레이어 인원 수만 필요하므로 제외 /*class Player { private int no; private int money; public Player(int no, int money) { this.no = no; this.money = money; } public int getNo() { return no; } public int getMoney() { return money; } }*/ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; public class Poker01 { public static void main(String[] args) { // 52장의 카드를 섞고, 4명에게 배분하고, 포커 1라운드 (프리플랍 > 플랍 > 턴 > 리버) 까지 진행하는 프로그램 int player_num = 4; List<String> deck = new ArrayList<String>(); // 카드 덱 생성 1. 카드 배열 생성 후 list에 포함 /* String[] cards = { "♠ A", "♠ 2", "♠ 3", "♠ 4", "♠ 5", "♠ 6", "♠ 7", "♠ 8", "♠ 9", "♠ 10", "♠ J", "♠ Q", "♠ K", "♥ A", "♥ 2", "♥ 3", "♥ 4", "♥ 5", "♥ 6", "♥ 7", "♥ 8", "♥ 9", "♥ 10", "♥ J", "♥ Q", "♥ K", "◆ A", "◆ 2", "◆ 3", "◆ 4", "◆ 5", "◆ 6", "◆ 7", "◆ 8", "◆ 9", "◆ 10", "◆ J", "◆ Q", "◆ K", "♣ A", "♣ 2", "♣ 3", "♣ 4", "♣ 5", "♣ 6", "♣ 7", "♣ 8", "♣ 9", "♣ 10", "♣ J", "♣ Q", "♣ K" }; deck = Arrays.asList(cards); */ // 카드 덱 생성 2. 반복문 이용하여 카드 생성 후 추가 for (int i = 0; i < 4; i++) { String s = ""; for (int j = 0; j < 13; j++) { // 문자 if (i == 0) s = s + "♠ "; else if (i == 1) s = s + "♠ "; else if (i == 2) s = s + "◆ "; else if (i == 3) s = s + "♣ "; // 숫자 if (j == 0) s = s + "A"; else if (j == 10) s = s + "J"; else if (j == 11) s = s + "Q"; else if (j == 12) s = s + "K"; else s = s + j + ""; // deck에 카드 추가 if (s.length() == 3) { deck.add(s); s = ""; } } } // 카드 섞기 Collections.shuffle(deck); // System.out.println(deck); // 텍사스 홀덤 1. 프리플랍 (플레이어 당 2장씩 배분) // j == 0 (내 차례)일 경우 출력, 나머지는 제거 int count = 0; while (true) { if (count == (2 * player_num - 1)) break; if (count % player_num == 0) { System.out.println("내 패 : " + deck.get(count)); deck.remove(count); } else deck.remove(count); count++; } // System.out.println(deck); // 텍사스 홀덤 2. 플랍 // 3장을 공개 for (int f = 0; f < 3; f++) { System.out.println("공개 패 " + (f + 1) + ": " + deck.get(count)); count++; } // 텍사스 홀덤 3. 턴 // 1장을 공개 System.out.println("공개 패 4 : " + deck.get(count)); count++; // 텍사스 홀덤 4. 리버 // 마지막 장 공개 System.out.println("공개 패 5 : " + deck.get(count)); } }
 

결과

notion image
 
Share article

sxias