포커 게임
- 컬렉션을 이용하여 포커 게임을 구현하시오.
문제 분석
- 카드 숫자 종류 : 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));
}
}
결과

Share article