티스토리 뷰
[주제]
- 포커 카드를 섞은 후 뽑은 카드의 그림과 숫자를 알려주기
※ 그림을 알아내는 알고리즘과 숫자를 알려주는 알고리즘은 'method'로 만들기
[중요]
- 카드숫자를 구할 땐 처음에 배정된 순수 번호에서 13으로 나눈 나머지를 카드숫자로 정함
- '13, 26, 39, 52' 번 카드는 카드숫자를 구할 때 13으로 나눈 나머지가 0이 되므로 마지막 숫자인 13(K)로 강제 지정
[소스 코딩]
package trump; class trump { public static void main(String[] args) { /* [카드 뽑기 프로그램] - 랜덤으로 52개의 숫자를 생성 ※ 0 ~ 51 - 카드 묶음에 넣고 그 중 무작위로 카드 1개를 뽑음 - 뽑은 카드의 그림 종류를 확인 - 뽑은 카드의 카드 숫자를 확인 - 뽑은 카드의 그림과 숫자를 출력 - method 1: 뽑은 카드의 그림을 알려줌 ※ ♠, ◆, ♥, ♣ - method 2: 뽑은 카드의 번호를 알려줌 ※ 1 ~ 10, J, Q, K - 카드의 그림 및 번호 └ 0 ~ 12 : ♠(스페이드) 1 ~ 10, J, Q, K └ 13 ~ 25: ◆(다이아몬드) 1 ~ 10, J, Q, K └ 26 ~ 38: ♥(하트) 1 ~ 10, J, Q, K └ 39 ~ 51: ♣(클로버) 1 ~ 10, J, Q, K */ int randValue = 52; // 무작위로 지정되는 숫자의 범위 값 ※ 1 ~ 10 int cardSet[] = new int[52]; // 무작위로 결정된 숫자를 저장 int randTemp; // 무작위 숫자를 중복검사 전 임시로 저장 boolean noSame[] = new boolean[randValue]; // 무작위 숫자 중복검사 대조 // 무작위 숫자 결정 시 중복 불가를 위한 준비 for(int i=0; i < noSame.length ; i++) { noSame[i] = false; } // 총 결정될 개수만큼 중복없는 숫자가 나올 때까지 무작위 결정을 반복 int randLoop = 0; while(randLoop < randValue) { randTemp = (int)(Math.random() * randValue); if(noSame[randTemp] == false) { noSame[randTemp] = true; cardSet[randLoop] = randTemp + 1; randLoop++; } } for(int i=0; i < 52; i++) { System.out.println("cardSet[" + i + "] = " + cardSet[i]); } int drawCard = cardSet[(int)(Math.random() * randValue)]; // @테스트: 카드 번호 지정 // drawCard = 1; // @테스트: 뽑은 카드 번호 확인 System.out.println("뽑은 카드는 카드 묶음의 " + drawCard + "번 카드"); // 카드의 이미지 체크 String cardImg = checkImg(drawCard); // 카드의 번호 체크 String cardNum = checkNum(drawCard); // 결과 출력 System.out.println("뽑은 카드는 " + cardImg + " " + cardNum + "입니다."); } ///// method 영역 ///// // 카드그림 종류 체크 public static String checkImg(int drawCardNum){ String cardImg; if(drawCardNum > 0 && drawCardNum < 14) { cardImg = "♠"; } else if (drawCardNum > 13 && drawCardNum < 27) { cardImg = "◆"; } else if (drawCardNum > 26 && drawCardNum < 40) { cardImg = "♥"; } else { cardImg = "♣"; } return cardImg; } // 카드번호 체크 및 변환 public static String checkNum(int cardNum) { String str = ""; // 실제 카드 숫자로 변환 if(cardNum == 0) { cardNum = (cardNum % 13); } else if(cardNum % 13 == 0) { cardNum = 13; } else{ cardNum = (cardNum % 13); } // 카드 번호가 '11' 이상이면 알파벳으로 변경 if (cardNum > 10) { switch(cardNum) { case 11: str = "J"; break; case 12: str = "Q"; break; case 13: str = "K"; break; } } else { str = Integer.toString(cardNum); } return str; } } | cs |
■ 실행결과
'프로그래밍 언어 > Java(연습)' 카테고리의 다른 글
sortMethod(메소드 연습) (0) | 2016.04.28 |
---|---|
methodClass2(메소드 연습) (0) | 2016.04.28 |
method(함수, 메소드) (0) | 2016.04.27 |
야구 게임 (0) | 2016.04.27 |
sorting(정렬) (0) | 2016.04.27 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- RA
- 여행영어 100일의 기적
- 자료구조
- 계산기
- 상황
- tdataset
- 독해
- java
- ADODB
- 문법
- System
- 작문
- Reference
- 영어
- 스택
- Pte
- 교육센터
- Delphi
- 대상
- SWT
- 정렬
- wfd
- 설명
- 응용
- VCL
- 왕초보 영어회화 100일의 기적
- 말하기
- 일기
- 알고리즘
- SysUtils
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함