card.js /* var game_select; ゲームの選択 card() カードを引きall_cardの最後の所に0~51の数字を代入 (今との互換性はなくなるがcard()に引数を用意して乱数の最大値を可変にすれば特殊ルールにも使えるだろう) →game_selectを使用しないで行う。現状の使用状況がわからないのでコメントアウトはしない card_s() 0~86の数字をall_cardに代入する 特殊カードなら戻り値1違ったら0 convert(n) 連想配列を配列に変換する n = 1ならプレイヤーの特殊カードの連想配列を配列化 card_init() //デバッグ済み //特殊ルール用追加済み all、player、hostのカード情報すべてを初期化 */ player.js /* //特殊ルール用追加済み hit(n) ヒットしてカードを追加 プレイヤーなら0ホストなら1 n = 10なら全員 n = 2なら特殊ルールのプレイヤー card()を読み込んでall_cardが更新されるのでその最後の値を代入 double() チップの操作をしてhit(0) discard(n, a) カードを捨てる n = 0のときプレイヤーのカードで一番新しいものを捨てる(aを使わないので省略可(discard(0))) n = 1のときプレイヤーの特殊カードの配列でa番地のカードを捨てる */ calc.js /* calc() プレイヤー(0)かホストか(1)を判断してその人の手札の合計点を 要素数2の配列の結果で返す(A[1, 11]の判断を容易にするため) (役がブラックジャックなら (戻り値[11, 21] && OO_length == 1)になるのでそれで判断できれば) (計算結果だけlet sum の定義で連想配列でなく配列になってる) */ judge.js /* result() //デバッグ済み ホストとプレイヤーの勝敗判定をし戻り値nを返す (コンソールログを用意してるのでいらなければコメントアウトでも削除でも) n = 0 プレイヤーはバースト負け(バースト判定はホストが動く前に行う必要があるので不必要(形式的に用意)) n = 1 負け n = 2 引き分け n = 3 役ブラックジャックで勝利(この役で勝つと掛け金の1,5倍の払い戻しがありその計算をする為に) n = 4 勝ち (n = 5 エラーナンバー(存在しない値)) action_judge() //デバッグ済み プレイヤーの次の行動(2枚配られた(hit(0)を2回した)後)を導きだし戻り値nを返す n = 0 プレイヤーはバーストした このゲームはホストの行動なしで負ける n = 1 プレイヤーは役ブラックジャック すぐホストの行動に移る n = 2 プレイヤーはまだヒットしていないのでダブルを含めた行動(double,hit,stand)ができる n = 3 プレイヤーはヒットしたためダブル以外の行動ができる(hit,stand) suit_num(n) poker_hand(n)(後述の関数)で使う(多分他では使わない) nの人の手札のスートとランク(数字)を計算する。 (とりあえずn = 0なら自分、1なら相手(host)) poker_hand(n) クローズドポーカーでもテキサスホールデムでも利用可能 ポーカーで5枚以上手札がある(テキサスホールデムのルールならコミュニティカードも手札と考える) 時の役を判定し、戻り値として要素数不定の配列を返す 役の判定には0番地の値を使う。 (n = 0 の時は自分の役を判定) ・ロイヤルストレートフラッシュ 戻り値[0] ・ストレートフラッシュ 戻り値[1,x] 1番地のxにはカードの中で一番大きいランク ・フォーカード 戻り値[2,x,y] 1番地のxはフォーカードが成立しているランクの値、2番地yはキッカー ・フルハウス 戻り値[3,x,y] xはスリーカードが成立している中で最大の値、yはペア以上が成立している中で最大の値 ex)0(エース)3枚、12(キング)3枚、3(4)の時、戻り値[3,0,12] ・フラッシュ 戻り値[4,arr] 1番地のarrには要素数5の配列、ランク順に格納 ・ストレート 戻り値[5,x] xにはカードの中で一番大きいランク ・スリーカード 戻り値[6,x,arr] xにはスリーカードが成立しているランク、arrには要素数2でキッカー格納 ・ツーペア 戻り値[7,x,y,z] xにはペアができている中で最大のランク、yは次に最大のランク、zはキッカー ・ワンペア 戻り値[8,x,arr] xにはペアができているランク、arrには要素数3でキッカー格納 ・ハイカード 戻り値[9,arr] arrには要素数5でランク順に格納 ・エラー 戻り値[10] 普通にやれば出ない poker_winner(p0,p1) ポーカーでp0とp1の勝者を判定し、戻り値nを返す 引数p0,p1にはpoker_hand()で作成したデータがそれぞれ入っているものとする。 n = 0 p0の勝ち n = 1 p1の勝ち n = 2 引き分け n = 99 何かしらのエラー */ host.js /* host_play() ホストの行動(2枚配られた後の動き) ホストがブラックジャックだったらhost_sumは[11, 21] それ以外だったらhost_sumの[0]と[1]は同じ値になっている。 (プレイヤーとの比較の時にプレイヤーがブラックジャックじゃない21のときの勝敗が容易にわかるはず) */ save.js /* グローバル変数(定数) var restartchip = OO; //リスタート時のチップ OOに設定 (リスタートするときランダムで値が決定したら面白いかも) const save_name = OO; セーブデータの名前 OOに設定 const rs_count リスタート回数のキー名 関数 save() チップの枚数セーブ load() チップの枚数ロード save_init() セーブデータの初期化 */