728x90
package object.Extends;
//--------------------------------------------------------------------------
// 카드 클래스
//--------------------------------------------------------------------------
class Card {
static final int KIND_MAX = 4; // 카드의 무늬 수
static final int NUM_MAX = 13; // 무늬별 카드 수
static final int SPADE = 4;
static final int DIAMOND = 3;
static final int HEART = 2;
static final int CLOVER = 1;
int kind; // 카드의 무늬
int number; // 카드의 숫자
Card() {
this(SPADE, 1);
}
Card(int kind, int number) {
this.kind = kind;
this.number = number;
}
public String toString() { // toString 해줘야한다.
String kind = "";
String number = "";
switch(this.kind) {
case 4:
kind = "SPADE";
break;
case 3:
kind = "DIAMOND";
break;
case 2:
kind = "HEART";
break;
case 1:
kind = "CLOVER";
break;
}
switch(this.number) {
case 13:
number = "K";
break;
case 12:
number = "Q";
break;
case 11:
number = "J";
break;
default:
number = this.number + "";
}
return "카드의 무늬 : " + kind + ", 카드의 숫자 : " + number;
}
} // End - class Card
//--------------------------------------------------------------------------
// Deck 클래스
//--------------------------------------------------------------------------
class Deck {
final int CARD_NUM = 52; //카드의 개수
Card c[] = new Card[CARD_NUM];
Deck() { // Deck의 카드를 초기화한다.
int i = 0;
for(int k = Card.KIND_MAX; k > 0; k--) { // 카드의 무늬 개수(4개)
for(int n = 1; n < Card.NUM_MAX + 1; n++) { // 카드 무늬당 13번씩 작업한다.
c[i++] = new Card(k, n);
}
}
}
Card pick(int index) { // 지정된 위치(index)에 있는 카드를 한장 선택한다.
if(0 <= index && index < CARD_NUM)
return c[index];
else
return pick();
}
Card pick() { // Deck에서 임의의 카드를 한장 선택한다.
int index = (int)(Math.random() * CARD_NUM); // 0부터 51까지의 임의의 정수를 추출한다.
return pick(index);
}
void shuffle() { // 카드의 순서를 섞는다.
for(int n = 0; n < 1000; n++) {
int i = (int)(Math.random() * CARD_NUM);
Card temp;
temp = c[0];
c[0] = c[i];
c[i] = temp;
}
}
} // End - class Deck
//--------------------------------------------------------------------------
// public class CardDeckExam
//--------------------------------------------------------------------------
public class CardDeckExam {
public static void main(String[] args) {
Deck d = new Deck(); // 카드 한벌을 Deck에 만들어 놓는다.
Card c = d.pick(0); // 섞기 전에 제일 위의 카드를 뽑는다.
System.out.println(c);
d.shuffle(); // 카드를 섞는다.
c = d.pick(0); // 카드를 섞은 후 제일 위의 카드를 뽑는다.
System.out.println(c);
}
} // End - public class CardDeckExam
실행 결과 섞이는것을 볼 수 있다.
'Language > Java' 카테고리의 다른 글
[Java] 실습 class AppleOrange (0) | 2022.08.10 |
---|---|
[Java] compareTo 메소드 (0) | 2022.08.09 |
[Java] 실습 DrawShapeExam (0) | 2022.08.09 |
[Java] Scanner 클래스의 메서드 (0) | 2022.08.09 |
[Java] 실습 CaptionTvExam (0) | 2022.08.08 |