UNPKG

tsgammon-core

Version:

A Backgammon library for Typescript, formerly developed as a part of tsgammon-ui

41 lines (40 loc) 1.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.rollMathRandom = exports.presetDiceSource = exports.randomDiceSource = void 0; function diceSource(doRoll) { const doRollDices = () => ({ dice1: doRoll(), dice2: doRoll() }); return { roll: doRollDices, openingRoll: () => asOpeningRoll(doRollDices), }; } exports.randomDiceSource = diceSource(rollMathRandom); /** * 指定された配列が尽きるまでは、その内容がロール結果として返る * 尽きた後は、randomDiceSourceと同じ動作をする * @param pips ロール結果として返したい目の配列 */ function presetDiceSource(...pips) { const pipEntries = pips.entries(); const doRoll = () => { const value = pipEntries.next(); return value.done ? rollMathRandom() : value.value[1]; }; return diceSource(doRoll); } exports.presetDiceSource = presetDiceSource; function asOpeningRoll(src) { let counter = 0; do { const dices = src(); if (dices.dice1 !== dices.dice2) { return dices; } counter++; } while (counter < 1000); throw new Error('Too many doublets'); } function rollMathRandom() { return (Math.floor(Math.random() * 6) + 1); } exports.rollMathRandom = rollMathRandom;