乱反射の光跡 in hatenablog

なみへいのブログです。hatenablogヴァージョン。

BlackJack制作ノート その9(1)

その9(1) 「ブラックジャック」ボーナスのチェック


以前、「その0」から「その2」まで公開し、「その3」から「その8」まではホームページで公開した、「BlackJack制作ノート」の続きです。
やっと「以前やったこと」の話をホームページで終えたので、これからぼちぼち、先へ進みたいと思いますが。


では、今日からversion 0.4 に取りかかりましょうか。
……と、思ったのですが、その前に確認しておくことが、いろいろありそうです(笑)。
「その7」で触れましたが、「ブラックジャック」の手(スペードのエース+スペードのジャックの組み合わせ)の時の11倍のボーナスについては、制作中の試験段階では出てくることがなく、確認が出来ませんでした。
 という訳で、「ブラックジャックの手」が頻発するように、ソースコードを一時的に書き換えて試してみました。


NNDeckクラスの中の、NNCardへ渡す引数の配列で、スーツの種類を全部スペードに、数字も半分以上がエースとジャックになるようにして、ビルド・実行させてみます。
 そうすると、出るわ出るわ、そこら中がスペードのエースとジャックだらけ(笑)。すぐに「ブラックジャックの手」になるのはいいのですが、ディーラーの手もスペードのエースとジャックだらけなので、なかなか勝てません(笑)。


とりあえず「ブラックジャックの手」の時に 「11 x」 という表示が出ることは出たのですが、それで勝つと、賭け金が16.5倍になってしまいました。これは21点の時の「1.5倍ボーナス」が効いているためで、それをさらに11倍した数字を賭け金に当ててしまっていたためです。


ブラックジャックの手」では必ず21点になって、このボーナスは必ず重複するので、おそらく解釈としては「21点の時は元の1.5倍、ただし、ブラックジャックの手の時は元の11倍」というのが正しいのではないか、と判断しました。


これはボーナスによって変動する賭け金を納める変数betValueを単純に11倍してしまっていたからで、betValueに代入する数値を元の賭け金を納めた変数baseBetの11倍にしてやれば解決します。


「これで大丈夫」、と、思ったのですが……。
このままだと、思っても見ない時に「11 x」表示が出てくることがありました。
1枚目と2枚目がスペードのジャックで、3枚目にエースを引いた場合にも「11 x」の表示が出てしまったのです。これは条件設定が「21点の時に、1枚目と2枚目のカードが両方ともスペードのエースまたはジャックだった場合」となっているためで、実際に手の中のカードの枚数を考慮していないためです。これでは1枚目と2枚目がスペードのエース(12点)で、3枚目以降が全部で9点だった場合にも出てしまう訳で、これでは条件設定が「ブラックジャックの手」に当て嵌まっていないことになります。


こうした可能性を考えると、「ブラックジャックの手」の条件設定に「手のカードが2枚のみ」という条件も必要です。……ということに、実験してみて初めて気づいたり(笑)。


という訳で、この条件設定も見直すことに(笑)。次のヴァージョンで修正しましょう(笑)。
条件判断の式が簡単になるように、フラグを使った条件設定にするという手もあるかもしれません。これも次のヴァージョンの検討課題、ということに。……どんどん、課題が増えます(笑)。