class DeckTest { publicstaticvoid main(String args[]) {
Deck d = new Deck(); // 카드 한 벌(Deck)을 만든다.
Card c = d.pick(0); // 섞기 전에 제일 위의 카드를 뽑는다.
d.shuffle(); // 카드를 섞는다.
// 위에서 부터 카드 5장을 뽑아서 그 값을 출력한다. for(int i=0; i < 5; i++) { System.out.print(d.pick(i)+" ");
} System.out.println();
}
}
// Deck클래스 class Deck { finalint CARD_NUM = 52; // 카드의 개수
Card c[] = new Card[CARD_NUM];
Deck () { // Deck의 카드를 초기화한다. int i=0;
for(int k=Card.KIND_MAX; k > 0; k--) { for(int n=1; n < Card.NUM_MAX + 1 ; n++) {
c[i++] = new Card(k, n);
}
}
}
Card pick(int index) { // 지정된 위치(index)에 있는 카드 하나를 선택한다. return c[index%CARD_NUM];
}
Card pick() { // Deck에서 임의의 위치에 있는 카드 하나를 선택한다. int index = (int)(Math.random() * CARD_NUM); return pick(index);
}
void shuffle() { // 카드의 순서를 섞는다. for(int n=0; n < 1000; n++) { int i = (int)(Math.random() * CARD_NUM);
Card temp = c[0]; // 첫 번째 카드와 임의로 선택된 카드를 서로 바꾼다.
c[0] = c[i];
c[i] = temp;
}
}
}
// Card클래스 class Card { staticfinalint KIND_MAX = 4; // 카드 무늬의 수 staticfinalint NUM_MAX = 13; // 무늬별 카드 수
switch(this.kind) { case 4 :
kind = "♤";
break; case 3 :
kind = "◇";
break; case 2 :
kind = "♡";
break; case 1 :
kind = "♧";
break; default :
}
switch(this.number) { case 13 :
number = "K";
break; case 12 :
number = "Q";
break; case 11 :
number = "J";
break; case 1 :
number = "A";
break; default :
number = this.number + "";
} return kind + number;
}
}
첫댓글 random()를 사용했기 때문에 실행할때마다 결과가 다를 수 있습니다. 계속 실행시키다보면 언젠가는 로티플이 나올지도...^^;
한글입력상태에서 'ㅁ'을 입력한 다음 한자키를 누르면 컴퓨터 화면의 우측하단에 특수문자들이 나타나는데. 이 때 커서키와 숫자키를 이용해서 ♤와 같은 특수문자를 선택할수 있습니다.
카드 한벌을 영어로 Deck라고 합니다. 카드 한벌은 52장의 Card로 이루어져 있으므로 Deck클래스의 멤버로 Card클래스 배열을 선언했습니다.
이 예제를 응용해서 카드게임을 만들어 보세요. ^^;