Треки
/
Pharo
Pharo
/
Вправи
/
Боулінг
Боулінг

Боулінг

Середня

Вказівки

Підрахуйте очки за гру в боулінг.

Боулінг - це гра, у якій гравці котять важку кулю, щоб збити кеглі, розставлені трикутником. Напишіть код, який веде облік очок за гру в боулінг.

Підрахунок очок у боулінгу

Гра складається з 10 фреймів. Фрейм складається з одного або двох кидків кулі, коли на початку фрейму стоять 10 кеглів. Є три випадки підрахунку очок за фрейм.

  • Відкритий фрейм - це коли за фрейм записано менш ніж 10 очок. У цьому разі кількість очок за фрейм дорівнює кількості збитих кеглів.

  • Спеа - це коли всі десять кеглів збито другим кидком. Загальна вартість спеа становить 10 плюс кількість кеглів, збитих наступним кидком.

  • Страйк - це коли всі десять кеглів збито першим кидком. Загальна вартість страйку становить 10 плюс кількість кеглів, збитих наступними двома кидками. Якщо за страйком одразу йде другий страйк, то вартість першого страйку не можна визначити, доки не буде зроблено ще один кидок.

Ось приклад із трьох фреймів:

Фрейм 1 Фрейм 2 Фрейм 3
X (страйк) 5/ (спеа) 9 0 (відкритий фрейм)

Фрейм 1 - це (10 + 5 + 5) = 20

Фрейм 2 - це (5 + 5 + 9) = 19

Фрейм 3 - це (9 + 0) = 9

Отже, поточний загальний результат дорівнює 48.

Десятий фрейм у грі - особливий випадок. Якщо хтось вибиває спеа або страйк, то отримує відповідно один або два додаткові кидки. Додаткові кидки потрібні, щоб обчислити загальну суму за 10-й фрейм. Якщо на додатковому кидку вибито страйк або спеа, гравець не отримує більше додаткових кидків. Загальна вартість 10-го фрейму дорівнює загальній кількості збитих кеглів.

Для десятого фрейму X1/ (страйк і спеа) загальна вартість становить 20.

Для десятого фрейму XXX (три страйки) загальна вартість становить 30.

Вимоги

Напишіть код, який веде облік очок за гру в боулінг. Він має підтримувати дві операції:

  • roll(pins : int) викликають щоразу, коли гравець котить кулю. Аргумент - це кількість збитих кеглів.
  • score() : int викликають лише в самому кінці гри. Вона повертає загальну кількість очок за цю гру.

Реалізація

Знадобиться зберегти частину стану гри.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Pharo Exercism

Час розпочати Боулінг?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Pharo, а також 50 вправ та справжнє наставництво від людей, і все це безкоштовно.