JAVA 초급, 카드 게임 초안
package f_oop2;
import java.util.Arrays;
public class DeckTest {
public static void main(String[] args) {
Card c = new Card(2,3);
System.out.println(c.toString());
Deck d= new Deck();
System.out.println(Arrays.toString(d.c));
}
}
class Card{
static final int KIND_MAX=4;
static final int NUM_MAX=13;
static final int SPADE=1; //숫자로 종류 관리 //상수
static final int CLOVER=2;
static final int DIMOND=3;
static final int HEART=4;
int kind;
int number; //13
Card(int kind, int number){
this.kind=kind;
this.number=number;
}
Card(){
this(SPADE,1);//상수
}
@Override
public String toString(){
String kind =""; //1=A, 11=J, 12=Q, 13K
String number ="";
switch(this.kind){
case 1:
kind="SPADE";
break;
case 2:
kind="CLOVER";
break;
case 3:
kind="DIMOND";
break;
default:
kind="HEART";
break;
}
switch(this.number){
case 1:
number="A";
break;
case 11:
number="j";
break;
case 12:
number="Q";
break;
case 13:
number="K";
break;
default:
number=""+this.number;
break;
}
return kind + " " + number;
}
}
class Deck{
static final int CARD_NUM = Card.KIND_MAX*Card.NUM_MAX ;
Card[] c = new Card[CARD_NUM];
Deck(){
int num=0;
for(int i=0;i<Card.KIND_MAX;i++){
for(int j=0;j<Card.NUM_MAX;j++){
c[num++]=new Card(i+1,j+1);
}
}
}
Card pick(int a){
Card result = c[a];
return result;
}
Card pick(){
Card random = pick((int)(Math.random()*52+0)) ;
return random;
}
void shuffle(){
for(int i=0; i< CARD_NUM;i++) {
Card j = pick();
Card tmp = c[i];
c[i] = j;
j = tmp;
}
}
void shuffle(int num){
for(int k=0; k< num; k++) {
Card a = pick();
Card b = pick();
Card tmp = a;
a = b;
b = tmp;
}
}
}
* 상세 주석 및 테스트
package f_oop2;
import java.util.Arrays;
public class DeckTest {
public static void main(String[] args) {
Card c = new Card(2,3);
//System.out.println(c);
System.out.println(c.toString());
Deck d= new Deck();
System.out.println(Arrays.toString(d.c));
}
}
class Card{
static final int KIND_MAX=4;
static final int NUM_MAX=13;
static final int SPADE=1; //숫자로 종류 관리 //상수
static final int CLOVER=2;
static final int DIMOND=3;
static final int HEART=4;
int kind;
int number; //13
//매개변수가 두개인 생성자를 만들
Card(int kind, int number){
this.kind=kind;
this.number=number;
}
//기본생성자 //매개변수가 두개인 생성자를 만들어 1, 1의 값으로 초기화
Card(){
this(SPADE,1);//상수
}
@Override
public String toString(){
String kind =""; //1=A, 11=J, 12=Q, 13K
String number ="";
switch(this.kind){
case 1:
kind="SPADE";
break;
case 2:
kind="CLOVER";
break;
case 3:
kind="DIMOND";
break;
default:
kind="HEART";
break;
}
switch(this.number){
case 1:
number="A";
break;
case 11:
number="j";
break;
case 12:
number="Q";
break;
case 13:
number="K";
break;
default:
number=""+this.number;
break;
}
return kind + " " + number;
}
}
class Deck{
//1 카드 수량을 저장할 수 있는 CARD_NUM 변수를 선언 및 초기화. 단 카드 클래스의 상수 이용. 카드 클래스에서 값을 가져와
//덱 안에 들어가는 카드의 개수
static final int CARD_NUM = Card.KIND_MAX*Card.NUM_MAX ;
//2. 카드 52장을 담을 변수를 선언 및 생성 c
Card[] c = new Card[CARD_NUM];
//3. 기본생성자를 만드세요 1,1 1,2 1,3 ~ 4,11 4,12 4,13 //c에 52장의 카드를 채워주세요
//CARD_NUM[KIND_MAX][NUM_MAX]
// Deck(){
// for(int i=0;i<Card.KIND_MAX;i++){
// int num=i*Card.NUM_MAX;
// for(int j=0;j<Card.NUM_MAX;j++){
// c[num+j]=new Card(i+1,j+1);
// }
// }
// }
Deck(){
int num=0;
for(int i=0;i<Card.KIND_MAX;i++){
for(int j=0;j<Card.NUM_MAX;j++){
c[num++]=new Card(i+1,j+1);
}
}
}
//4. c의 방 번호를 입력받아 해당 방 번호의 카드를 반환하는 메서드를 만드세요 pick
Card pick(int a){
Card result = c[a];
return result;
}
//5. 랜덤번째 방의 카드 한장을 반환하는 메서드를 만드세요 pick. 단 4번에서 만든 메서드를 활용하세요
// Card pick(){
// return c[(int)(Math.random()*52+1)];
// }
// void pick(){
// this.pick((int)(Math.random()*52+1));
// }
// Card pick(){
// Card random = c[(int)(Math.random()*52+0)] ;
// return random ;
// }
Card pick(){//인스턴스화 없이 pick을 쓸 수 있다?
Card random = pick((int)(Math.random()*52+0)) ;
return random;
}
//6. 카드를 섞어주세요 shuffle //단 연습문제 5-5번을 응용하세요
void shuffle(){
// for(int i=0; i< CARD_NUM;i++) {
// Card j = pick();
// Card tmp = null;
//
// tmp=c[i];
// c[i]=j;
// j=tmp;
for(int i=0; i< CARD_NUM;i++) {
Card j = pick();
Card tmp = c[i];
c[i] = j;
j = tmp;
}
}
//7. 카드를 섞어주세요 shuffle 반복 횟수를 입력받아 해당 횟수만큼
//랜덤한 방을 두개 봅아 위치를 변경해주세요
void shuffle(int num){
// for(int k=0; k< num; k++) {
// Card a = pick();
// Card b = pick();
// Card tmp = null;
// tmp = a;
// a = b;
// b = tmp;
// }
for(int k=0; k< num; k++) {
Card a = pick();
Card b = pick();
Card tmp = a;
a = b;
b = tmp;
}
}
}
'새로워지기 > 서른의 생활코딩' 카테고리의 다른 글
삼팔광땡 MYSQL 입문기 - 프롤로그 (0) | 2019.02.08 |
---|---|
mac 에서 sql developer 실행을 위해 docker 를 설치하다 (0) | 2018.08.25 |
초급 java 실습 예제 모음 : 객체지향 1부까지 (0) | 2018.06.21 |
oracle SQL 실습 예제 모음 : 기본 DML, 기본 TCL index view (0) | 2018.06.21 |
9일차) (0) | 2018.06.12 |
댓글