1.ブラックジャックのゲームをするプログラムを作成せよ。

ただし最低限、以下のクラスに分けること。なぜなら、ディーラー、プレイヤー、カード、デッキなどのクラスは他のゲームプログラムでも共用したいからである。

BlackJack:ブラックジャックゲームの本体

Human:ディーラーとプレイヤーのスーパークラス

Dealer:ディーラー

Player:プレイヤー

Card:1枚のカード

Deck:13枚×4種類⁼52枚で1組のカードが集まったデッキ

Hand:手札

出力例①ルールの解説から互いにブラックジャックを出してあなた(人間)の勝ち

ブラックジャックにようこそ!
♠♣ ルール解説 ♦♥
ブラックジャックはあなた(プレイヤー)と私(ディーラー)との間で1対1の勝負を行うトランプゲームです。
プレイヤーの目標は、21を超えないように手持ちのカードの点数の合計を21に近づけ、その点数がディーラーを上回ることです。
手の中のカードの点数は、カード2~10ではその数字通りの値であり、また、絵札であるK(キング)、Q(クイーン)、J(ジャック)は10と数ます。
ただし、A(エース)は、1と11のどちらか、都合のよい方で数えることができます。
ディーラーは互いに2枚ずつカードを配ります。
ディーラーの2枚のカードのうちの1枚は表向きにされ、見ることができます。
もう1枚のカードは伏せられていてプレイヤーの選択の後に明かされます。
プレイヤーはヒットまたはスタンドの選択を行います。
 ヒット (Hit)
  カードをもう1枚引く。
 スタンド (Stand)
  カードを引かずにその時点の点数で勝負する。
プレイヤーは21を超えなければ何回でもヒットすることができます。
21を超えてしまうことをバスト(bust)と呼び、直ちにプレイヤーの負けとなります。
プレイヤーの選択のあとにディーラーは自分のカードを開きます。
ディーラーは、自分の手が17以上になるまでカードを引かなければならず、17以上になったら、その後は追加のカードを引くことはできません。
プレイヤーがバーストしておらず、ディーラーがバーストしたらプレイヤーの勝利です。
プレイヤーとディーラーが同じ点数の場合にはあなたの勝ちとしましょう。
お名前を教えてください
imai
 
 
ディーラー の手札
♠10 と■です(^^♪
 
imaiの番です。
♥J ♣Aがimaiの手札です
————————————-
現在のimaiの得点:21 点
 
ヒットしますか?(Y or N)
n
imaiはStandしました
 
♠10 ♠2がディーラーの手札です
————————————-
現在のディーラーの得点:12 点
 
ディーラーがhitしました。
♣4を引きました
♠10 ♠2 ♣4がディーラーの手札です
————————————-
現在のディーラーの得点:16 点
 
ディーラーがhitしました。
♥5を引きました
♠10 ♠2 ♣4 ♥5がディーラーの手札です
————————————-
現在のディーラーの得点:21 点
 
ディーラーがStandしました。
 
♠♣ 結果発表 ♦♥
あなたの勝ちです。
 
ばくちのやりすぎには注意しましょうね!
(^.^)/~~~

出力例②ディーラー(コンピュータ)の勝ち

ブラックジャックにようこそ!
 
(中略)
 
ディーラー の手札
♥K と■です(^^♪
 
imaiの番です。
♦3 ♦4がimaiの手札です
————————————-
現在のimaiの得点:7 点
 
ヒットしますか?(Y or N)
y
♦Qを引きました
imaiの番です。
♦3 ♦4 ♦Qがimaiの手札です
————————————-
現在のimaiの得点:17 点
 
ヒットしますか?(Y or N)
n
imaiはStandしました
 
♥K ♠3がディーラーの手札です
————————————-
現在のディーラーの得点:13 点
 
ディーラーがhitしました。
♥7を引きました
♥K ♠3 ♥7がディーラーの手札です
————————————-
現在のディーラーの得点:20 点
 
ディーラーがStandしました。
 
♠♣ 結果発表 ♦♥
ディーラーの勝ちです。
 
ばくちのやりすぎには注意しましょうね!
(^.^)/~~~

出力例③お互いにバストしてディーラーの勝ち

(中略)

ディーラー の手札
♣K と■です(^^♪

imaiの番です。
♠A ♠2がimaiの手札です
————————————-
現在のimaiの得点:13 点

ヒットしますか?(Y or N)
y
♣2を引きました
imaiの番です。
♠A ♠2 ♣2がimaiの手札です
————————————-
現在のimaiの得点:15 点

ヒットしますか?(Y or N)
y
♥7を引きました
imaiの番です。
♠A ♠2 ♣2 ♥7がimaiの手札です
————————————-
現在のimaiの得点:12 点

ヒットしますか?(Y or N)
y
♣Aを引きました
imaiの番です。
♠A ♠2 ♣2 ♥7 ♣Aがimaiの手札です
————————————-
現在のimaiの得点:13 点

ヒットしますか?(Y or N)
y
♠10を引きました
♠A ♠2 ♣2 ♥7 ♣A ♠10がimaiの手札です
————————————-
現在のimaiの得点:23 点

imaiはバストしました

♣K ♥6がディーラーの手札です
————————————-
現在のディーラーの得点:16 点

ディーラーがhitしました。
♠6を引きました
♣K ♥6 ♠6がディーラーの手札です
————————————-
現在のディーラーの得点:22 点

ディーラーがバストしました。

♠♣ 結果発表 ♦♥
ディーラーの勝ちです

ばくちのやりすぎには注意しましょうね!
(^.^)/~~~

2.上記プログラムをコンピュータ同士が対戦するように作り変えよ。

3.上記プログラムを複数人プレイできるように作り変えよ。

4.オリジナル問題作成

将来の後輩のために良い問題が出来たら教えてください。
 

以上。

 

JavaSEの問題集トップページに戻る