Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | 1x 1x 1x 1x 1x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 10x 10x 14x 14x 14x 14x 14x 2x 2x 2x 2x 2x 6x 6x 2x 2x 1x 1x 1x 1x 2x 2x 2x 14x | import { random } from "@jga/algorithms";
import { DiceAsymmetricMethod, DiceInterface } from "./diceInterface";
export abstract class DiceBase implements DiceInterface {
/**
* @inheritdoc
*/
public readonly sides: number;
/**
* Constructor
*
* @param sides number Dice sides number
*/
public constructor(sides: number) {
this.sides = sides;
}
/**
* @inheritdoc
*/
public roll(): number {
return random(1, this.sides);
}
/**
* @inheritdoc
*/
public asymmetricRoll(method: DiceAsymmetricMethod, rerolls: number): number {
let result: number;
const rolls: number[] = [];
// eslint-disable-next-line no-loops/no-loops
for (let i = 0; i < rerolls; i++) {
rolls.push(this.roll());
}
if (DiceAsymmetricMethod.MIN === method) {
result = Math.min(...rolls);
} else {
result = Math.max(...rolls);
}
return result;
}
}
|