Я пишу симуляцию на Python для игры в кости и пытаюсь найти лучший способ справиться со следующей ситуацией объектно-ориентированным способом.
У меня есть класс Dice, который обрабатывает бросокигральные кости и сообщающие вещи о кости.Методы этого класса включают метод roll()
, который изменяет значения костей, и различные методы отчетности, описывающие состояние костей, такие как have_n_of_a_kind()
, is_scoring_combination()
и get_roll_value()
.
.два класса, которые используют этот класс Dice.Игроку, контролируемому непосредственно человеком, не доверяют всегда делать легальные ходы.Существует также класс Turn, который обеспечивает соблюдение правил игры.
Итак, класс Player и Turn должен иметь возможность запрашивать Dice о его значениях, вызывая методы, описывающие состояние, но Playerнельзя позволить напрямую вызывать метод roll()
, потому что игрок-игрок может бросить, когда это не предполагается.
Есть ли хороший способ для меня позволить классу Turn вызывать объект Dice из roll()
метод, но не позволяет игроку сделать это?