포커카드를 enum 형식으로 저장해서 출력해보는 프로그램을 만들어보자
.
.
enum 형식으로 카드 종류랑 숫자를 입력한다.
그리고 enum 이름 으로 객체를 만들어서 프로그램을 작성한다.
.
.
package enumCard;
public class Card {
enum Kind {SPADE, DIAMOND, HEART, CLOVER}
enum Number {ACE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING}
Kind kind;
Number num;
static final int KIND_MAX = 4;
static final int NUM_MAX = 13;
public Card() {
this(Kind.SPADE, Number.ACE);
}
public Card(Kind kind, Number num) {
this.kind = kind;
this.num = num;
}
public Kind getKind() { return kind; }
public void setKind(Kind kind) { this.kind = kind; }
public Number getNumber() { return num; }
public void setNumber(Number number) { this.num = number; }
@Override
public String toString() {
return "Card [kind=" + kind.name() + ", number=" + num.name() + "]";
}
}
.
Deck이라는 카드판 클래스를 만든다.
여기서는 카드를 뽑고 섞는 메소드를 구현한다
.
package enumCard;
import java.util.*;
public class Deck {
static final int TOTAL_CARDS = Card.Kind.values().length * Card.Number.values().length;
private Card[] deck;
Random random = new Random();
public Deck() {
deck = new Card[TOTAL_CARDS];
int index = 0;
for(Card.Kind kind : Card.Kind.values()) {
for(Card.Number num : Card.Number.values()) {
deck[index++] = new Card(kind, num);
}
}
}
// 지정된 위치의 카드를 변환한다.
public Card getCard(int index) { return deck[index];}
public Card getCard() { return deck[random.nextInt(52)];}
// Deck의 전체 카드를 섞는다.
public void shuffle() {
Card temp = null;
int index = 0;
for(int i = 0; i < TOTAL_CARDS; i++) {
index = random.nextInt(52);
temp = deck[0];
deck[0] = deck[index];
deck[index] = temp;
}
System.out.println("카드 섞기를 완료하였습니다.");
}
}
.
그리고 실행할 프로그램을 작성한다
.
package enumCard;
public class TestCard {
public static void main(String[] args) {
Deck deck = new Deck();
deck.shuffle(); // 카드를 섞는다.
for(int i = 0; i < 5; i++) {
Card c = deck.getCard(i);
System.out.println(c);
}
}
}
.
.
728x90
반응형
'Java > 본격 Java 퀴즈 기초' 카테고리의 다른 글
[Java] TreeSet 활용하기 (0) | 2020.07.13 |
---|---|
[Java] HashSet을 이용하여 교집합, 차집합, 합집합 구해보기 (0) | 2020.07.13 |
[Java] Stack을 이용하여 2진수 만들기 (0) | 2020.07.13 |
[Java] 도형의 성질을 이용하여 크기 조절하기(인터페이스) (0) | 2020.07.13 |
[Java] 점과 원 위치 이동하는 절차 인터페이스로 만들기 (0) | 2020.07.13 |