mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-04-06 01:00:28 -04:00
78 lines
5.4 KiB
Markdown
78 lines
5.4 KiB
Markdown
---
|
||
id: 5e46f8d6ac417301a38fb92d
|
||
title: Камінь-ножиці-папір
|
||
challengeType: 10
|
||
forumTopicId: 462376
|
||
dashedName: rock-paper-scissors
|
||
---
|
||
|
||
# --description--
|
||
|
||
В цьому завданні ви створите програму, щоб грати в камінь-ножиці-папір. Програма, яка обиратиме випадково, зазвичай виграватиме у 50%. Щоб виконати це завдання, ваша програма повинна зіграти матчі проти чотирьох різних ботів, вигравши принаймні 60% ігор у кожному матчі.
|
||
|
||
Ви будете <a href="https://replit.com/github/freeCodeCamp/boilerplate-rock-paper-scissors" target="_blank" rel="noopener noreferrer nofollow">працювати над цим проєктом з нашим стартовим кодом Replit</a>.
|
||
|
||
- Почніть з імпорту проєкту на Replit.
|
||
- Потім ви побачите вікно `.replit`.
|
||
- Оберіть `Use run command` та натисніть кнопку `Done`.
|
||
|
||
Ми досі розробляємо інтерактивну складову для навчальної програми з машинного навчання. Поки вам доведеться використовувати інші ресурси, щоб виконати це завдання.
|
||
|
||
# --instructions--
|
||
|
||
У файлі `RPS.py` вам надається функція під назвою `player`. Функція приймає аргумент, який є рядком, що описує останній хід суперника («R», «P» або «S»). Функція повинна повертати рядок, що представляє наступний хід для відтворення («R», «P» або «S»).
|
||
|
||
Функція гравця отримає порожній рядок як аргумент для першої гри в матчі, оскільки немає попередньої гри.
|
||
|
||
У файлі `RPS.py` показано приклад функції, яку вам потрібно оновити. Приклад функції визначається двома аргументами (`player(prev_play, opponent_history = [])`). Функція ніколи не викликається другим аргументом, тому він є абсолютно необов’язковим. Причина, чому функція з прикладу містить другий аргумент (`opponent_history = []`), полягає в тому, що це єдиний спосіб зберегти стан між послідовними викликами функції `player`. Вам потрібен лише аргумент `opponent_history`, якщо ви хочете стежити за історією ходів супротивника.
|
||
|
||
*Підказка: щоб перемогти всіх чотирьох супротивників, ваша програма повинна мати багато стратегій, які змінюються залежно від гри супротивника.*
|
||
|
||
## Розробка
|
||
|
||
Не змінюйте `RPS_game.py`. Запишіть весь свій код у `RPS.py`. Для розробки ви можете використати `main.py`, щоб протестувати свій код.
|
||
|
||
`main.py` імпортує функцію гри та ботів із `RPS_game.py`.
|
||
|
||
Щоб перевірити свій код, пограйте в гру за допомогою функції `play`. Функція `play` приймає чотири аргументи:
|
||
|
||
- два гравці грають один проти одного (насправді гравцями є функції)
|
||
- кількість ігор, які потрібно зіграти в матчі
|
||
- додатковий аргумент для перегляду записів кожної гри. Встановіть його на `True`, щоб побачити ці повідомлення.
|
||
|
||
```py
|
||
play(player1, player2, num_games[, verbose])
|
||
```
|
||
|
||
Наприклад, ось як можна викликати функцію, якщо ви хочете, щоб `player` та `quincy` зіграли один проти одного 1000 ігор та бажаєте побачити результати кожної гри:
|
||
|
||
```py
|
||
play(player, quincy, 1000, verbose=True)
|
||
```
|
||
|
||
Натисніть кнопку «run» і `main.py` запуститься.
|
||
|
||
## Тестування
|
||
|
||
Модульні тести для цього проєкту знаходяться в `test_module.py`. Ми імпортували тести з `test_module.py` до `main.py` для вашої зручності. Якщо ви видалите коментар в останньому рядку в `main.py`, тести запустяться автоматично, коли ви натиснете кнопку «run».
|
||
|
||
## Надсилання
|
||
|
||
Скопіюйте URL-адресу свого проєкту та відправте її.
|
||
|
||
# --hints--
|
||
|
||
Проєкт повинен пройти усі тести Python.
|
||
|
||
```js
|
||
|
||
```
|
||
|
||
# --solutions--
|
||
|
||
```py
|
||
# Python challenges don't need solutions,
|
||
# because they would need to be tested against a full working project.
|
||
# Please check our contributing guidelines to learn more.
|
||
```
|