Реализовать класс DiceRoller, описывающий логику бросания набора игральных (шестигранных) костей.
Member | Description |
---|---|
private: $diceValues | массив значений, выпавших на костях |
private: $diceCount | количество костей |
__construct($count) | конструктор. Считать что на всех костях изначально выпала шестёрка |
getCount() | возвращает количество костей |
getValue($index) | возвращает значение на кости с указанныи индексом |
roll($index) | бросаает кость с указанным индексом |
total() | возвращает сумму значений на всех костях |
__toString() | возаращает значения всех костей в виде строки, например "{4, 1, 6, 5}" |
Реализовать новый класс RiggedDiceRoller который расширяет класс DiceRoller. Выпадающее на игральной кости значение при каждом броске должно быть больше либо равно определённому ранее минимуму, таким образом данный класс должен позволять игроку мухлевать. Описание дополнительного поведения
Member | Description |
---|---|
private: $minValue | минимальное значение для результата броска кости |
__constructor($count, $min) | $count - количество костей, $min - минимальное значение для результата броска кости; значение для костей по-умолчанию - 6 (если минимум не лежит в диапазоне 1-6, бросить исключение) |
getMin() | возвращает минимальное значение для результата броска кости |
Для всех унаследованных действий RiggedDiceRoller должен вести себя как объект DiceRoller, за исключением следующих различий. Возможно, вам придется переопределить или заменить существующее поведение, чтобы реализовать эти изменения.
- сумма возвращаемая RiggedDiceRoller должна всегда быть на 1 больше фактической суммы
- класс RiggedDiceRoller должен предупреждать что о своём поведении при распечатке. Т.е сначала пишем "rigged", затем значения костей, потом минимум. Пример: "rigged {4, 3, 6, 5} min 2"