Back to feed
Renewal·서른의 생활코딩

Beginner JAVA, card game draft

NS
normalstory
cover image

Beginner JAVA, card game draft

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;
   }
 }
}

 

* Detailed comments and tests 

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;

 }

 }



}

 

 

This English version was translated by Claude.

친절한 찰쓰씨
Written by
친절한 찰쓰씨

Pleasant Charles — UI/UX researcher at AIT. Keeping notes on design, planning, and slow days here since 2010.

More on the author's page

Keep reading

Renewal

Steadily, for the long haul, without burning out

Mar 31, 2026·9 min
Renewal

Tech-life balance

Feb 7, 2026·3 min
Renewal

Humanality, by Park Jeong-ryeol

Feb 7, 2026·11 min