ヤッツィというゲームをブラウザでできるようにしてみた。
BGAでやればよくない?
【操作方法】
①「ダイスを振る」ボタンを押す(□□□□□に1~6の数がランダムに与えられる)
②ダイスを振りなおすかセクション(スコア)を決定するフェイズ
・スコアを決定する場合は「This Score」列のセルをクリックする
・ダイスを振りなおす場合は、ダイス(□)をクリックして選択した後、「ダイスを振る」ボタンを押す。
(ダイスを振りなおせるのは2回まで)
③上記を、全てのセクションが埋まるまで続ける(計13ラウンド)
See the Pen Yahtzee by yulianess23 (@yulianess23) on CodePen.
特に解説することもないですが、できるだけ判定を簡単に(わかりやすく)する工夫だけしたかった部分。
var dice = [];
var sum = 0; // ダイスの合計値
var vals = [0, 0, 0, 0, 0, 0, 0]; // 各目の個数
var pair = [0, 0, 0, 0, 0, 0]; // ペアの数
$(".dice").each(function(i, e) {
var v = $(e).text();
sum += parseInt(v);
vals[v]++;
dice.push(v);
});
$.each(vals, function(i, v) {
pair[v]++;
});
最初はPHPでやってたけどCodepenで表示させるためにjavascript化したのでやや冗長。
PHPだと以下。
$sum = array_sum($dice);
$acv = array_count_values($dice);
$pair = [1=>0,2=>0,3=>0,4=>0,5=>0];
foreach ($acv as $v) $pair[$v]++;
また、ストレートの判定はパターン数が少ないのでソート&重複削除でパターンと直接比較する等。