Как создать игру в боулинг на Python с помощью Sololearn

Вот пример игры в боулинг, реализованной на Python с использованием платформы Sololearn:

class BowlingGame:
    def __init__(self):
        self.rolls = []
    def roll(self, pins):
        self.rolls.append(pins)
    def score(self):
        total_score = 0
        roll_index = 0
        for frame in range(10):
            if self.is_strike(roll_index):
                total_score += 10 + self.strike_bonus(roll_index)
                roll_index += 1
            elif self.is_spare(roll_index):
                total_score += 10 + self.spare_bonus(roll_index)
                roll_index += 2
            else:
                total_score += self.sum_of_pins_in_frame(roll_index)
                roll_index += 2
        return total_score
    def is_strike(self, roll_index):
        return self.rolls[roll_index] == 10
    def is_spare(self, roll_index):
        return self.rolls[roll_index] + self.rolls[roll_index + 1] == 10
    def strike_bonus(self, roll_index):
        return self.rolls[roll_index + 1] + self.rolls[roll_index + 2]
    def spare_bonus(self, roll_index):
        return self.rolls[roll_index + 2]
    def sum_of_pins_in_frame(self, roll_index):
        return self.rolls[roll_index] + self.rolls[roll_index + 1]

# Example usage:
game = BowlingGame()
game.roll(3)
game.roll(5)
# ... continue rolling ...
# Print the final score
print("Final score:", game.score())

Приведенный выше код определяет класс BowlingGame, который отслеживает броски и подсчитывает очки. Он использует список для хранения количества кеглей, сбитых в каждом броске. Метод rollиспользуется для записи количества сбитых кеглей при каждом броске.

Метод scoreвычисляет общий балл, проходя по кадрам и проверяя наличие ударов, запасов или обычных бросков. Методы is_strike, is_spare, strike_bonus, spare_bonusи sum_of_pins_in_frameявляются вспомогательными методами. используется для определения оценки для каждого кадра.