BLACK JACKの作成 ブラックジャックのルール 概要 勝敗の判定 開発中の問題点 Aの扱いについて 配り直し(DEAL) 工夫した点 勝敗の判定 開発中の問題点 Aの扱いについて 配り直し(DEAL) 工夫した点 コンピュータの思考 課題点
ブラックジャックのルール ・カードを二枚づつ配り、 1枚目は伏せる。(DEAL) ・子から数字が足して21に 近づくように山からカードをひく。(HIT) ・21を超えたら負け(BURST) ・HITし終えたら勝負(STAND) ・互いにオープンし、数字が21に近いほうが 勝ち!
特殊ルール ただし、JACK,QUEEN,KING,は10として計算する。 また、Aはプレイヤーの意思で1と11を選択可能。 子が手札が5枚になって21以下の時は5カードで、勝ちとする。
概要 JAVAでBlackJackをプログラミングした。 実際に人を相手にゲームをしている感覚に近づくようにした。
勝敗の判定 以下の順に判定する。 プレイヤーが5枚カードを持っていて、21以下ならプレイヤーの勝ち 以下の順に判定する。 プレイヤーが5枚カードを持っていて、21以下ならプレイヤーの勝ち プレイヤーが21を超えたらプレイヤーの負け COMが21を超えたらプレイヤーの勝ち プレイヤーがCOMより数が多ければ勝ち 同じ時は引き分け 少ない時はプレイヤーの負け
開発中の問題点 Aの扱いについて 基本的には11として計算する。 手札の合計が21を超えてしまった時はAを1として考える。
配り直しについて 変数宣言の場所が問題だった。DEALボタンを押すたびに、すべての変数を初期化しなくてはいけないので、ローカル変数を気軽に宣言できないことがわかった。
工夫した点 コンピューターの思考回路 まず、自分のカードの合計が15以下の時は、黙って引く。
思考回路2 明らかにプレイヤーが強いとき プレイヤーのカードの見えてる部分(2枚目以降)の合計が11や10の時は、おおざっぱに18以上ないと5割以上の確率で負ける。 見えてるカードが10のとき プレイヤーは19以上になっている確率が5割以上なので、バーストを考えてもHITしたほうが得になる。
思考回路3 プレイヤーの手の推測 見えてる部分の合計が同じ10や11でも、HITの回数が少ないほうが強いと推測できる。特にHITなしでAが見えているときは18では不安。
思考回路4 相手が弱そうなとき プレイヤーの手の見えている部分が7以下の時は無理せず15あったらSTAND。 ただし、三枚見えている時は16がライン。
課題点 やりのこした事 COMの戦略性をもっと上げたかった。 COM、またはPLAYERを複数にしたかった。 BETボタンがないと・・・