Skip to content

Instantly share code, notes, and snippets.

@kroer
Last active November 7, 2017 09:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kroer/aec66e84ff4d63fa7c46a5eeb65ac958 to your computer and use it in GitHub Desktop.
Save kroer/aec66e84ff4d63fa7c46a5eeb65ac958 to your computer and use it in GitHub Desktop.

Реализовать класс 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"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment