/*------------------------------------- Ex8_4.java 順列:トランプのシャッフル & BlackJack --------------------------------------*/ package jp_bunkyo; import java.util.Random; import java.util.Scanner; public class Ex8_4 { public static void main(String[] args) { Random rnd = new Random(); Scanner stdin = new Scanner(System.in); int[] card = new int[52]; // トランプのカード int i, j, x, y, tmp; for (i = 0; i < 4; i++) { // カードの初期化:1〜13の数値を4種類設定 for (j = 0; j < 13; j++) { card[13*i+j] = j+1; } } for (i = 0; i < 52; i++) { System.out.print(" " + card[i]); // カード52枚を表示 } System.out.println(); // シャッフル for (i = 0; i < 10000; i++) { x = rnd.nextInt(52); // カードを入れ替える位置 x y = rnd.nextInt(52); // カードを入れ替える位置 y tmp = card[x]; // カード[x] とカード[y] を交換 swap card[x] = card[y]; card[y] = tmp; } for (i = 0; i < 52; i++) { System.out.print(" " + card[i]); // カード52枚を表示 } System.out.println(); System.out.println("------------"); System.out.println(" Black Jack "); System.out.println("------------"); int num, sum; // num: 引いたカードの枚数を保持,sum: 引いたカードの合計を保持 char flg = 'y'; // flg: 繰り返しの判定用(y = 繰り返し,o.w. = 終了してループ脱出) num = 2; // 最初に2枚ひくので2をいれておく if ( card[0] > 10 ) { // 最初に引いた2枚のカードの合計値を代入しておく sum = 10; // card[0] > 10 なら 10 を加算 } else { sum = card[0]; // そうでなければ card[0] の数値を加算 } if ( card[1] > 10 ) { sum += 10; // card[1] > 10 なら 10 を加算 } else { sum += card[1]; // そうでなければ card[1] の数値を加算 } while ( flg == 'y' ) { // Game Start!(flg が y である限り繰り返し) System.out.print(" Your card = "); for (i = 0; i < num; i++) { System.out.print("[" + card[i] + "]"); // もちカード表示 } System.out.print(" もう一枚ひきますか? (y / n) > "); flg = stdin.nextLine().charAt(0); if ( sum == 21 ) { // カード合計 sum = 21 ならBlackJack! System.out.println(" Black Jack! Yow Win !! "); return; } else if ( sum > 21 ) { // カード合計 sum > 21 ならバーストで負け System.out.println(" バースト: You Lose... "); } if ( flg == 'n' ) { // もうやめるので,判定 if ( sum > 21 ) { // カード合計 sum > 21 ならバーストで負け System.out.println(" バースト: You Lose... "); } else { System.out.println(" You Win ! "); } } sum += card[num]; // 引いたカードの数字を合計に加算 num++; // 引いたカードの枚数を加算 } } }