練習問題

【Java】ブラックジャック(トランプ)を実行するプログラム

 

ここではトランプゲームのブラックジャックを行うプログラムを作ります。

前:進数変換を行うプログラム

あわせて読みたい
Java【練習問題】N進数変換のやり方~10進数→n進数へ、n進数→10進数への変換~ここでは入力された数値を10進数からn進数、もしくはn進数から10進数に変換するプログラムを紹介します。 前:20個のサイコロを振...

 

ソースコード

import java.util.Random;

import java.util.*;

import java.io.*;

 

public class BlackJack {

public static void main(String[] args) throws IOException {

BufferedReader br =new BufferedReader(new InputStreamReader(System.in));

int プレイヤー点数=0,ディーラー点数=0;

Random random=new Random();

int num=random.nextInt(52);

int[] プレイヤーカード=new int[30];

int[] ディーラーカード=new int[30];

for (int i=0;i<2;i++) {

プレイヤーカード[i]=random.nextInt(13)+1;

if (プレイヤーカード[i]>=10) {

プレイヤーカード[i]=10;

}

if (プレイヤーカード[i]==1) {

プレイヤーカード[i]=11;

}

プレイヤー点数+=プレイヤーカード[i];

if (プレイヤー点数>=22) {

for (int l=0;l<=プレイヤーカード.length;l++) {

if (プレイヤーカード[l]==11) {

プレイヤーカード[l]=1;

プレイヤー点数-=10;

}

}

}

}

 

for (int i=2;プレイヤー点数<22;i++) {

System.out.println("現在の点数は"+プレイヤー点数+"です。");

System.out.println("もう一枚引くなら「ヒット」、引かないなら「スタンド」と入力してください");

String str=br.readLine();

 

if (str.equals("ヒット")) {

プレイヤーカード[i]=random.nextInt(13)+1;

if (プレイヤーカード[i]>=10) {

プレイヤーカード[i]=10;

}

if (プレイヤーカード[i]==1) {

プレイヤーカード[i]=11;

}

プレイヤー点数+=プレイヤーカード[i];

if(プレイヤー点数>=22) {

System.out.println("プレイヤーはバストしました");

break;

}

}

if (str.equals("スタンド")) break;

for (int j=0;ディーラー点数<17;j++) {

ディーラーカード[j]=random.nextInt(13)+1;

if (ディーラーカード[j]>=10) {

ディーラーカード[j]=10;

}

if (ディーラーカード[j]==1) {

ディーラーカード[j]=11;

}

ディーラー点数+=ディーラーカード[j];

if(ディーラー点数>=22) {

System.out.println("ディーラーはバストしました");

break;

}

}

}

if (ディーラー点数>21&&プレイヤー点数<22) {

System.out.println("プレイヤーの勝ち");

}else if (ディーラー点数<22&&プレイヤー点数>21) {

System.out.println("ディーラーの勝ち");

}else if (ディーラー点数>プレイヤー点数) {

System.out.println("ディーラーの勝ち");

}else if (ディーラー点数<プレイヤー点数) {

System.out.println("プレイヤーの勝ち");

}else if (ディーラー点数==プレイヤー点数) {

System.out.println("引き分け");

}else if (ディーラー点数>21&&プレイヤー点数>21) {

System.out.println("ディーラーの勝ち");

}

}

}

 

スポンサーリンク


 

実行結果

C:\Users\Desktop\Java\jdk1.8.0_131\program>java BlackJack
現在の点数は19です。
もう一枚引くなら「ヒット」、引かないなら「スタンド」と入力してください
スタンド
プレイヤーの勝ち
C:\Users\Desktop\Java\jdk1.8.0_131\program>java BlackJack
現在の点数は14です。
もう一枚引くなら「ヒット」、引かないなら「スタンド」と入力してください
ひっと
現在の点数は14です。
もう一枚引くなら「ヒット」、引かないなら「スタンド」と入力してください
ヒット
現在の点数は21です。
もう一枚引くなら「ヒット」、引かないなら「スタンド」と入力してください
スタンド
引き分け

 

簡単に内容の説明

このプログラムではプレイヤーとディーラーで別々に処理を行い、最後に結果を比べ数値がより21に近い方が勝ちと表示させています。

プレイヤーは最初に2枚カードを配られ点数が表示されます。

ここで、さらに1枚引く時は「ヒット」と入力し、その点数で勝負するときは「スタンド」と入力します。

ディーラーは点数が17点未満の時は追加で1枚引きます。それ以上になると勝負します。

入力された文字が「ヒット」、「スタンド」意外だった場合は入力のやり直しをさせています。

 



あわせて読みたい
サイトマップ ...