- 카드 클래스를 생성하여 카드 한 장 만들기
- 52장의 카드를 포함하는 카드 묶음 만들기
- 카드를 섞고 나누는 기능
📢 개별 카드(card)를 생성하는 클래스
숫자 (num): 1부터 13까지의 값. 1은 A, 11은 J, 12는 Q, 13은 K로 표시
모양 (shape): ♦, ♥, ♣, ♠
public class Card {
private int num;
private String shape;
public Card() {
this.num = 1; // 기본 숫자 A
this.shape = "♥"; // 기본 모양 ♥
}
public void print() {
System.out.print(shape);
switch (num) {
case 1: System.out.print("A "); break;
case 11: System.out.print("J "); break;
case 12: System.out.print("Q "); break;
case 13: System.out.print("K "); break;
default: System.out.print(num + " ");
}
}
public void setNum(int num) {
if (num < 1 || num > 13) {
this.num = 1;
} else {
this.num = num;
}
}
public void setShape(String shape) {
if ("♦ ♥ ♣ ♠".contains(shape)) {
this.shape = shape;
} else {
this.shape = "♥";
}
}
}
📢 카드 묶음(Card Pack)을 생성하는 클래스
- 52장의 카드로 구성.
- 카드 섞기, 카드 나누기, 초기화
public class CardPack {
private Card[] pack = new Card[52];
private int cnt = 0;
public CardPack() {
String[] shapes = {"♦", "♥", "♣", "♠"};
for (int i = 0; i < 4; i++) {
for (int j = 1; j <= 13; j++) {
Card c = new Card();
c.setShape(shapes[i]);
c.setNum(j);
pack[cnt] = c;
cnt++;
}
}
}
public void shuffle() {
for (int i = 0; i < pack.length; i++) {
int random = (int) (Math.random() * pack.length);
Card tmp = pack[i];
pack[i] = pack[random];
pack[random] = tmp;
}
}
public Card pick() {
if (cnt == 0) {
return null;
}
cnt--;
return pack[cnt];
}
public void init() {
cnt = 52;
}
public void printCardPack() {
for (int i = 0; i < pack.length; i++) {
pack[i].print();
if ((i + 1) % 13 == 0) {
System.out.println();
}
}
}
}
📢 메인 클래스
- 앞서 구현한 Card 클래스와 CardPack 클래스를 활용하여 기본 기능 실행
public class CardMain {
public static void main(String[] args) {
// 카드 묶음을 생성하고 섞기
CardPack cp = new CardPack();
cp.shuffle();
cp.printCardPack(); // 섞인 카드 출력
System.out.println("-----------------");
System.out.println("딜러가 카드를 나누고 있습니다.");
// 플레이어에게 카드 나누기
for (int i = 1; i <= 5; i++) {
System.out.print("player" + i + ": ");
Card playerCard = cp.pick();
playerCard.print(); // 나눠준 카드 출력
System.out.println();
}
// 카드 초기화 및 다시 섞기
cp.init();
cp.shuffle();
System.out.println("-----------------");
System.out.println("딜러가 카드를 나누고 있습니다.");
// 다시 플레이어에게 카드 나누기
for (int i = 1; i <= 5; i++) {
System.out.print("player" + i + ": ");
Card playerCard = cp.pick();
playerCard.print();
System.out.println();
}
}
}
결과
♦2 ♦J ♦K ♦6 ♦5 ♦3 ♦10 ♣7 ♠A ♥Q ♠6 ♥K ♦8 ♣10
♥4 ♣5 ♦9 ♥A ♦3 ♠J ♠7 ♣9 ♥9 ♠8 ♣3 ♣8 ♦4
♠Q ♣2 ♣4 ♦A ♥8 ♥7 ♦5 ♣6 ♥2 ♦2 ♥6 ♠5 ♠4
♦K ♠2 ♥5 ♥3 ♣A ♠10 ♦Q ♠9 ♦11 ♣J ♦12 ♥Q
-----------------
딜러가 카드를 나누고 있습니다.
player1: ♥8
player2: ♦5
player3: ♠K
player4: ♣3
player5: ♥9
카드를 초기화하고 다시 섞습니다.
-----------------
딜러가 카드를 나누고 있습니다.
player1: ♣10
player2: ♥2
player3: ♦Q
player4: ♠3
player5: ♥J
'백엔드 > Java' 카테고리의 다른 글
| Java로 학생 정보 관리 시스템 구현(2) (1) | 2024.10.07 |
|---|---|
| Java로 학생 정보 관리 시스템 구현(1) (2) | 2024.10.02 |
| Java 클래스(Class) (2) (1) | 2024.09.30 |
| Java 클래스(Class) (1) (0) | 2024.09.29 |
| Java로 로또 번호 생성기 만들기(1) (0) | 2024.09.29 |