diff --git a/__pycache__/yahtzee.cpython-310.pyc b/__pycache__/yahtzee.cpython-310.pyc new file mode 100644 index 0000000..bb12e89 Binary files /dev/null and b/__pycache__/yahtzee.cpython-310.pyc differ diff --git a/__pycache__/yahtzee_goals.cpython-310.pyc b/__pycache__/yahtzee_goals.cpython-310.pyc new file mode 100644 index 0000000..c8b0b1f Binary files /dev/null and b/__pycache__/yahtzee_goals.cpython-310.pyc differ diff --git a/yahtzee.py b/yahtzee.py index 8ae2b41..ad4fbf6 100644 --- a/yahtzee.py +++ b/yahtzee.py @@ -9,12 +9,17 @@ class Yachtzee: self.goals = goals self.dice = [Die() for num in range(5)] + """Plays a game of Yahtzee, round by round until all goals have been used. + """ def play(self): print("Welcome to Yachtzee!") while self.count_unused_goals() > 0: self.play_round() print(f"Your final score was {self.score}") + """Plays a single round of Yahtzee, allowing up to 3 re-rolls and ending when + the player chooses a goal to use to score. + """ def play_round(self): print("=" * 80) self.rolls_left = 3 @@ -25,10 +30,16 @@ class Yachtzee: goal.used = True self.score += goal.score(self.dice) + """Reports stats between rolls, including current score, re-rolls remaining + and the current values of the dice. + """ def show_status(self): dice = ', '.join([str(die) for die in self.dice]) print(f"Score: {self.score}. Rolls left: {self.rolls_left}. Dice: {dice}.") + """Allows the user to choose the goal to use on the scoresheet from the list of + remaining unused goals. + """ def choose_goal(self): options = [] unused_goals = self.get_unused_goals() @@ -45,6 +56,9 @@ class Yachtzee: else: return unused_goals[choice] + """Processes the user's choice for validity, moving on after receiving a valid + goal choice. + """ def get_choice(self, options): print("What would you like to do?") for i, option in enumerate(options): @@ -55,6 +69,9 @@ class Yachtzee: choice = input("> ") return int(choice) + """Only returns true when the choice from the user is one of the numbered + list items available to them. + """ def option_choice_is_valid(self, choice, options): if not choice.isdigit(): return False @@ -64,9 +81,13 @@ class Yachtzee: return False return True + """Used to determine when the game is over because all goals have been used. + """ def count_unused_goals(self): return len(self.get_unused_goals()) + """Generates the list of unused goals at that point in the game. + """ def get_unused_goals(self): unused_goals = [] for goal in self.goals: @@ -74,6 +95,8 @@ class Yachtzee: unused_goals.append(goal) return unused_goals + """Removes a re-roll available to the player and re-rolls selected dice. + """ def reroll(self): self.rolls_left -= 1 choices = self.get_reroll_choices() @@ -81,6 +104,8 @@ class Yachtzee: for die in dice_to_reroll: die.roll() + """Collects the individual dice to be rerolled after validation. + """ def get_dice_to_reroll(self, choice_ints): dice_to_reroll = [] for die in self.dice: @@ -89,6 +114,9 @@ class Yachtzee: dice_to_reroll.append(die) return dice_to_reroll + """Collects which dice to be rerolled from the user as a single, + multi-place number, like "6442". + """ def get_reroll_choices(self): print("Which dice do you want to re-roll?") choices = input("> ") @@ -98,6 +126,8 @@ class Yachtzee: choice_ints = [int(digit) for digit in choices] return choice_ints + """Checks that the dice to be rerolled are available to be rerolled. + """ def reroll_choices_are_valid(self, choices_str): if not choices_str.isdigit(): return False