728x90
반응형
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | package com.human.ex; import java.util.Random; import java.util.Scanner; public class BlackjackFuncDemo { public static int deck[] = new int[52]; public static int deckIndex = 0; // 사용자가 앞으로 사용할 카드 인덱스 public static String whoIsWin() { //승패 메소드 int p1=getSum(p1Deck,p1Index); int p2=getSum(p2Deck,p2Index); String playState = ""; if (p1 > 21) { // 먼저 카드를 받은 p1이 진다 playState = "p2 승리!!!"; } else if (p2 > 21) { playState = "p1 승리!!!"; } else if (p1 > p2) { playState = "p1 승리!!!"; } else if (p1 == p2) { playState = "무승부!!!"; } else { playState = "p2 승리!!!"; } return playState; } public static void gameDisplay() { //분배 화면 메소드 System.out.println(""); System.out.println(">>카드 현황"); deckDisplay(p1Deck, p1Index, "p1: "); System.out.println("p1 총점> " + getSum(p1Deck, p1Index)); deckDisplay(p2Deck, p2Index, "p2: "); System.out.println("p2 총점> " + getSum(p2Deck, p2Index)); System.out.println(""); } public static int getSum(int[] deck, int index) { //점수 구하기 메소드 int sum = 0; for (int i = 0; i < index; i++) { // A=1 J,Q,K=10으로 점수처리 한것 int score = 0; score = deck[i] % 13 + 1; if (score > 10) { score = 10; } sum = sum + score; } for (int i = 0; i < index; i++) { if (deck[i] % 13 == 0) { if (sum + 10 <= 21) { sum = sum + 10; } } } return sum; } public static void deckDisplay(int deck[], int index, String title) { String cardShape[] = { "스페이스", "클로버", "다이아", "하트" }; String cardNumber[] = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" }; System.out.print(title); for (int i = 0; i < p1Index; i++) { int cardSIndex = deck[i] / cardNumber.length; // 카드 모양(cardShape) 종류 '0:스페이스/1:클로버/2:다이아/3:하트' 총 0~3의 값 System.out.print(cardShape[cardSIndex]); int cardNIndex = deck[i] % cardNumber.length; // 카드 숫자(cardNumber) 종류 총 0~12의 값 System.out.print(cardNumber[cardNIndex] + " , "); } System.out.println(); } public static void deckDisplay(int deck[], int index) { String cardShape[] = { "스페이스", "클로버", "다이아", "하트" }; String cardNumber[] = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" }; for (int i = 0; i < p1Index; i++) { int cardSIndex = deck[i] / cardNumber.length; // 카드 모양(cardShape) 종류 '0:스페이스/1:클로버/2:다이아/3:하트' 총 0~3의 값 System.out.print(cardShape[cardSIndex]); int cardNIndex = deck[i] % cardNumber.length; // 카드 숫자(cardNumber) 종류 총 0~12의 값 System.out.print(cardNumber[cardNIndex] + " , "); } } public static void deckDisplay() { String cardShape[] = { "스페이스", "클로버", "다이아", "하트" }; String cardNumber[] = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" }; System.out.print("p1:"); for (int i = 0; i < p1Index; i++) { int cardSIndex = p1Deck[i] / cardNumber.length; // 카드 모양(cardShape) 종류 '0:스페이스/1:클로버/2:다이아/3:하트' 총 0~3의 값 System.out.print(cardShape[cardSIndex]); int cardNIndex = p1Deck[i] % cardNumber.length; // 카드 숫자(cardNumber) 종류 총 0~12의 값 System.out.print(cardNumber[cardNIndex] + " , "); } } public static int p1Deck[] = new int[10]; // p1의 카드 목록 public static int p1Index; // p1 카드 목록의 인덱스 public static boolean p1Flag = true; // 사용자가 카드를 받을것인지 결정하는 플래그 public static Scanner sc = new Scanner(System.in); public static void getp1Deck() { if (p1Flag) { System.out.println("카드를 받겠습니까? [0=NO 1=YES]"); if (sc.nextLine().equals("0")) { // 카드를 받지 않는 작업 p1Flag = false; } if (p1Flag) { // 카드를 받는 작업 p1Deck[p1Index] = deck[deckIndex]; deckIndex++; p1Index++; } } } // p2 public static int p2Deck[] = new int[10]; // p2의 카드 목록 public static int p2Index; // p2 카드 목록의 인덱스 public static boolean p2Flag = true; // 사용자가 카드를 받을것인지 결정하는 플래그 public static void getp2Deck() { if (p2Flag) { System.out.println("카드를 받겠습니까? [0=NO 1=YES]"); if (sc.nextLine().equals("0")) { // 카드를 받지 않는 작업 p2Flag = false; } if (p2Flag) { // 카드를 받는 작업 p2Deck[p2Index] = deck[deckIndex]; deckIndex++; p2Index++; } } } public static void mixDeck() { // 2.카드섞기 함수 Random rd = new Random(); int randNum; int temp; for (int i = 0; i < 10000; i++) { randNum = rd.nextInt(52); temp = deck[0]; deck[0] = deck[randNum]; deck[randNum] = temp; } } public static void createDeck() { // 1.카드생성 함수 for (int i = 0; i < 52; i++) { deck[i] = i; } } public static void main(String[] args) { createDeck(); mixDeck(); for (int i = 0; i < 3; i++) { getp1Deck(); getp2Deck(); gameDisplay(); } System.out.println("★★★★★"); System.out.println(whoIsWin()); | cs |
728x90
반응형
'개발자였던 것 > JAVA 프로그래밍' 카테고리의 다른 글
[java] 은행 회원관리 프로그램(메소드 구현) (0) | 2020.05.08 |
---|---|
[java] 다마고치 게임 (0) | 2020.05.08 |
사용자로부터 국어, 영어, 수학 점수를 입력 받아, 각 과목별 점수가 평균 이상인지 이하인지 구현하는 조건문 (0) | 2020.03.28 |
사각형의 넓이와 둘레를 구하는 메소드 구현 (0) | 2020.03.26 |
블랙잭 게임 구현 (0) | 2020.03.16 |