問題 オブジェクト指向設計
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)nimaiは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)nimaiは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.オリジナル問題作成
以上。