SlideShare a Scribd company logo
Урок № 8
Створення гри
Rock, paper,
scissors
ЗМІСТ
Вступ.  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 3
Створення гри Rock, paper, scissors.  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 4
Створення гри Rock, paper, scissors, lizard, Spock .  .  . 10
Вступ
Багато з вас знають досить популярну гру Rock,
paper, scissors («Камінь, ножиці, папір»). На цьому
уроці створимо прототип цієї гри, використовуючи
отримані протягом курсу знання.
Перш ніж приступити до написання коду, потрібно
продумати алгоритм гри і уточнити її правила (рис. 1).
Рисунок 1
3
Створення гри Rock, paper, scissors
Створення гри
Rock, paper, scissors
Правила прості: гра складається з трьох раундів,
кожен раз користувач самостійно вибирає варіант (ка-
мінь, ножиці, папір), а комп’ютер генерує випадкове
значення. Умови виграшу: камінь затуплює ножиці, па-
пір накриває камінь, ножиці розрізають папір. За кож-
ну перемогу нараховується 1 бал. Відповідно, виграє
той, хто зумів набрати більше очок. Можливі результа-
ти гри і кожного раунду такі: виграв користувач, виграв
комп’ютер, нічия.
Наведений нижче лістинг реалізує гру Rock, paper,
scissors:
import random
print("-----------------------------------")
print("-------Rock, paper, scissors-------")
print("Welcome to the game!")
print("The game consists of three rounds.")
print("The winner is the one who scores more
points.")
print("t[r] - rocknt[s] - papernt[p] -
scissors")
player_score = 0
player_select = 0
comp_score = 0
comp_select = 0
4
Урок № 8
print("-----------------------------------")
print("------------START GAME-------------")
for i in range(3):
print("t--------ROUND №" + str(i + 1) + "--")
comp_select = random.choice("rps")
while True:
player_select = input("tYour choice:")
if (player_select == "r") or
(player_select == "s") or
(player_select == "p"):
break
else:
print("tError")
print("tComputer:" + comp_select)
if player_select == comp_select:
print("tDraw!")
elif player_select == "r" and comp_select == "s":
player_score = player_score + 1
print("You win!")
elif player_select == "r" and comp_select == "p":
comp_score = comp_score + 1
print("tThe computer wins!")
elif player_select == "p" and comp_select == "r":
player_score = player_score + 1
print("tYou win!")
5
Створення гри Rock, paper, scissors
elif player_select == "p" and comp_select == "s":
comp_score = comp_score + 1
print("tThe computer wins!")
elif player_select == "s" and comp_select == "p":
player_score = player_score + 1
print("tYou win!")
elif player_select == "s" and comp_select == "r":
comp_score = comp_score + 1
print("tThe computer wins!")
print("-----------------------------------")
print("------------Game Result------------")
if player_score > comp_score:
print("Congratulations! You win!")
elif player_score < comp_score:
print("Sorry... The computer wins!")
else:
print("Draw!")
Давайте поетапно подивимося, що робить дана про-
грама.
Імпортуємо бібліотеку random. Вона гарантує, що
гра буде чесною і ніхто не підгляне, який варіант вибрав
користувач. Згенероване комп’ютером значення також
буде випадковим:
import random
6
Урок № 8
Обов’язково потрібно подати інструкцію з правила-
ми гри. Це слід зробити для того, щоб пояснити прави-
ла новому користувачеві.
print("Welcome to the game!")
print(("The game consists of three rounds.")
print("The winner is the one who scores more points.")
print("t[r] - rocknt[s] - papernt[p] -
scissors")
Потім створюємо змінні і кожній присвоюємо нуль:
player_score = 0
player_select = 0
comp_score = 0
comp_select = 0
Створюємо цикл for, щоб код всередині повторив-
ся кілька разів. Таким чином, переможця буде визначе-
но після трьох спроб:
for i in range(3):
...
...
З модуля random використовуємо функцію
choice(), яка дозволяє вибрати випадкове значення з
рядка:
comp_select = random.choice("rps")
7
Створення гри Rock, paper, scissors
Чи стикалися ви коли-небудь з помилками в про-
грамі, грі або на будь-якому сайті? Найімовірніше, так.
Щоб уникнути їхньої появи в програмі, давайте ретель-
но продумаємо алгоритм роботи гри і проаналізуємо,
які помилки можуть виникнути.
Уявіть, що гравець не став читати правила гри і за-
мість одного з допустимих значень (r, p, s) увів будь-
який інший символ. Такі помилки і неточності необхід-
но попередити заздалегідь. Тому додамо цикл while,
який працюватиме до тих пір, поки користувач не введе
правильне значення:
while True:
player_select = input("tYour choice:")
if (player_select == "r") or
(player_select == "s") or
(player_select == "p"):
break
else:
print("tError")
Чудово! Користувач вже зробив свій вибір і ввів зна-
чення, комп’ютер, в свою чергу, теж згенерував свій ва-
ріант.
Настав час зіставляти відповіді і вибирати перемож-
ця. Отже, вище вже були описані умови перемоги. Тепер
порівняємо, що вибрав player і що вибрав comp. Пере-
можцю в кожному раунді зараховується 1 бал. Тут ми
використовували на практиці вивчену раніше умовну
8
Урок № 8
9
Створення гри Rock, paper, scissors
інструкцію if-elif і оператор порівняння and:
if player_select == comp_select:
print("tDraw!")
elif player_select == "r" and comp_select == "s":
player_score = player_score + 1
print("tYou win!")
elif player_select == "r" and comp_select == "p":
comp_score = comp_score + 1
print("tThe computer wins!")
Ну що ж, на даному етапі ми вже реалізували всю
логіку програми. Залишилося лише визначити, хто ж
набрав найбільше балів, і повідомити про це гравцеві.
Знову використовуємо умовну інструкцію if-elif-
else, перевіряємо, хто набрав більше балів, і виводимо
результат в консоль:
if player_score > comp_score:
print("Congratulations! You win!")
elif player_score < comp_score:
print("Sorry... The computer wins!")
else:
print("Draw!")
Чудово! Ось ми і написали гру, а тепер якраз час її
запустити. Спробуйте не тільки зіграти в неї, але і спро-
буйте ввести некоректні значення, наприклад цифри 1,
2, 3.
Рисунок 2
10
Урок № 8
Зверніть увагу, що на наступний рівень не можна
перейти до тих пір, поки не буде введено коректно зна-
чення (r, p, s).
Створення гри Rock, paper,
scissors, lizard, Spock
Чи знаєте ви, що існує варіація створеної на занятті
гри, яка називається Rock, paper, scissors, lizard, Spock!
Її правила ідентичні до Rock, paper, scissors, проте умо-
ви виграшу трохи складніші (рис. 2).
11
Створення гри Rock, paper, scissors
Давайте доповнимо код створеної гри так, щоб ко-
ристувачеві було запропоновано зробити вибір не з
трьох, а з п’яти варіантів:
[s] - scissors
[p] - paper
[r] - rock
[l] - lizard
[o] - spock
Не забудьте підкоригувати правила гри. Тепер умов
виграшу буде більше, а значить і гра буде значно цікаві-
шою!
Урок № 8
Створення гри Rock, paper, scissors
© Комп'ютерна Академiя ШАГ
www.itstep.org
Усі права на фото-, аудіо- і відеотвори, що охороняються авторським правом і фраг-
менти яких використані в матеріалі, належать їх законним власникам. Фрагменти
творів використовуються в ілюстративних цілях в обсязі, виправданому поставле-
ним завданням, у рамках учбового процесу і в учбових цілях, відповідно до ст. 1274
ч. 4 ГК РФ і ст. 21 і 23 Закони України «Про авторське право і суміжні права». Обсяг і
спосіб цитованих творів відповідає прийнятим нормам, не завдає збитку нормально-
му використанню об’єктів авторського права і не обмежує законні інтереси автора
і правовласників. Цитовані фрагменти творів на момент використання не можуть
бути замінені альтернативними аналогами, що не охороняються авторським правом,
і відповідають критеріям добросовісного використання і чесного використання.
Усі права захищені. Повне або часткове копіювання матеріалів заборонене.
Узгодження використання творів або їх фрагментів здійснюється з авторами і
правовласниками. Погоджене використання матеріалів можливе тільки якщо
вказано джерело.
Відповідальність за несанкціоноване копіювання і комерційне використання
матеріалів визначається чинним законодавством України.

More Related Content

What's hot

Puppeteer - Headless Chrome Node API
Puppeteer - Headless Chrome Node APIPuppeteer - Headless Chrome Node API
Puppeteer - Headless Chrome Node API
Wilson Su
 
002. Introducere in type script
002. Introducere in type script002. Introducere in type script
002. Introducere in type script
Dmitrii Stoian
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기OnGameServer
 
The Eclipse Transformer Project
The Eclipse Transformer Project The Eclipse Transformer Project
The Eclipse Transformer Project
Jakarta_EE
 
Gun, nerin e. hitler y eva braun
Gun, nerin e.   hitler y eva braunGun, nerin e.   hitler y eva braun
Gun, nerin e. hitler y eva braun
Alma Heil 916 NOS
 
HELYX-OS in DEXCS2016 for OpenFOAM
HELYX-OS in DEXCS2016 for OpenFOAMHELYX-OS in DEXCS2016 for OpenFOAM
HELYX-OS in DEXCS2016 for OpenFOAM
hideaki Kominami
 

What's hot (6)

Puppeteer - Headless Chrome Node API
Puppeteer - Headless Chrome Node APIPuppeteer - Headless Chrome Node API
Puppeteer - Headless Chrome Node API
 
002. Introducere in type script
002. Introducere in type script002. Introducere in type script
002. Introducere in type script
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기
 
The Eclipse Transformer Project
The Eclipse Transformer Project The Eclipse Transformer Project
The Eclipse Transformer Project
 
Gun, nerin e. hitler y eva braun
Gun, nerin e.   hitler y eva braunGun, nerin e.   hitler y eva braun
Gun, nerin e. hitler y eva braun
 
HELYX-OS in DEXCS2016 for OpenFOAM
HELYX-OS in DEXCS2016 for OpenFOAMHELYX-OS in DEXCS2016 for OpenFOAM
HELYX-OS in DEXCS2016 for OpenFOAM
 

More from PavloTsiura

Mka python jr-urok_10_ua_1563259002
Mka python jr-urok_10_ua_1563259002Mka python jr-urok_10_ua_1563259002
Mka python jr-urok_10_ua_1563259002
PavloTsiura
 
Mka python jr-urok_09_ua_1563258982
Mka python jr-urok_09_ua_1563258982Mka python jr-urok_09_ua_1563258982
Mka python jr-urok_09_ua_1563258982
PavloTsiura
 
Mka python jr-urok_07_ua_1563258932
Mka python jr-urok_07_ua_1563258932Mka python jr-urok_07_ua_1563258932
Mka python jr-urok_07_ua_1563258932
PavloTsiura
 
Mka python jr-urok_06_ua_1563258907
Mka python jr-urok_06_ua_1563258907Mka python jr-urok_06_ua_1563258907
Mka python jr-urok_06_ua_1563258907
PavloTsiura
 
Mka python jr-urok_05_ua_1563258882
Mka python jr-urok_05_ua_1563258882Mka python jr-urok_05_ua_1563258882
Mka python jr-urok_05_ua_1563258882
PavloTsiura
 
Mka python jr-urok_04_ua_1563258855
Mka python jr-urok_04_ua_1563258855Mka python jr-urok_04_ua_1563258855
Mka python jr-urok_04_ua_1563258855
PavloTsiura
 
Mka python jr-urok_03_ua_1563258828
Mka python jr-urok_03_ua_1563258828Mka python jr-urok_03_ua_1563258828
Mka python jr-urok_03_ua_1563258828
PavloTsiura
 
Mka python jr-urok_01_ua_1563258764
Mka python jr-urok_01_ua_1563258764Mka python jr-urok_01_ua_1563258764
Mka python jr-urok_01_ua_1563258764
PavloTsiura
 

More from PavloTsiura (8)

Mka python jr-urok_10_ua_1563259002
Mka python jr-urok_10_ua_1563259002Mka python jr-urok_10_ua_1563259002
Mka python jr-urok_10_ua_1563259002
 
Mka python jr-urok_09_ua_1563258982
Mka python jr-urok_09_ua_1563258982Mka python jr-urok_09_ua_1563258982
Mka python jr-urok_09_ua_1563258982
 
Mka python jr-urok_07_ua_1563258932
Mka python jr-urok_07_ua_1563258932Mka python jr-urok_07_ua_1563258932
Mka python jr-urok_07_ua_1563258932
 
Mka python jr-urok_06_ua_1563258907
Mka python jr-urok_06_ua_1563258907Mka python jr-urok_06_ua_1563258907
Mka python jr-urok_06_ua_1563258907
 
Mka python jr-urok_05_ua_1563258882
Mka python jr-urok_05_ua_1563258882Mka python jr-urok_05_ua_1563258882
Mka python jr-urok_05_ua_1563258882
 
Mka python jr-urok_04_ua_1563258855
Mka python jr-urok_04_ua_1563258855Mka python jr-urok_04_ua_1563258855
Mka python jr-urok_04_ua_1563258855
 
Mka python jr-urok_03_ua_1563258828
Mka python jr-urok_03_ua_1563258828Mka python jr-urok_03_ua_1563258828
Mka python jr-urok_03_ua_1563258828
 
Mka python jr-urok_01_ua_1563258764
Mka python jr-urok_01_ua_1563258764Mka python jr-urok_01_ua_1563258764
Mka python jr-urok_01_ua_1563258764
 

Recently uploaded

«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
estet13
 
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdfLOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
Olga Kudriavtseva
 
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdfKUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
Olga Kudriavtseva
 
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdfПідсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
ssuser7541ef1
 
Основи_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdfОснови_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdf
olaola5673
 
Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»
Vinnytsia Regional Universal Scientific Library named after Valentin Otamanovsky
 
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdfГлавлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
olaola5673
 
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdfPOPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
Olga Kudriavtseva
 
29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx
Репетитор Історія України
 
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
tetiana1958
 

Recently uploaded (10)

«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
 
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdfLOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
 
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdfKUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
 
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdfПідсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
 
Основи_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdfОснови_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdf
 
Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»
 
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdfГлавлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
 
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdfPOPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
 
29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx
 
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
 

Mka python jr-urok_08_ua_1563258955

  • 1.
  • 2. Урок № 8 Створення гри Rock, paper, scissors ЗМІСТ Вступ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Створення гри Rock, paper, scissors. . . . . . . . . . . . . . . . . 4 Створення гри Rock, paper, scissors, lizard, Spock . . . 10
  • 3. Вступ Багато з вас знають досить популярну гру Rock, paper, scissors («Камінь, ножиці, папір»). На цьому уроці створимо прототип цієї гри, використовуючи отримані протягом курсу знання. Перш ніж приступити до написання коду, потрібно продумати алгоритм гри і уточнити її правила (рис. 1). Рисунок 1 3 Створення гри Rock, paper, scissors
  • 4. Створення гри Rock, paper, scissors Правила прості: гра складається з трьох раундів, кожен раз користувач самостійно вибирає варіант (ка- мінь, ножиці, папір), а комп’ютер генерує випадкове значення. Умови виграшу: камінь затуплює ножиці, па- пір накриває камінь, ножиці розрізають папір. За кож- ну перемогу нараховується 1 бал. Відповідно, виграє той, хто зумів набрати більше очок. Можливі результа- ти гри і кожного раунду такі: виграв користувач, виграв комп’ютер, нічия. Наведений нижче лістинг реалізує гру Rock, paper, scissors: import random print("-----------------------------------") print("-------Rock, paper, scissors-------") print("Welcome to the game!") print("The game consists of three rounds.") print("The winner is the one who scores more points.") print("t[r] - rocknt[s] - papernt[p] - scissors") player_score = 0 player_select = 0 comp_score = 0 comp_select = 0 4 Урок № 8
  • 5. print("-----------------------------------") print("------------START GAME-------------") for i in range(3): print("t--------ROUND №" + str(i + 1) + "--") comp_select = random.choice("rps") while True: player_select = input("tYour choice:") if (player_select == "r") or (player_select == "s") or (player_select == "p"): break else: print("tError") print("tComputer:" + comp_select) if player_select == comp_select: print("tDraw!") elif player_select == "r" and comp_select == "s": player_score = player_score + 1 print("You win!") elif player_select == "r" and comp_select == "p": comp_score = comp_score + 1 print("tThe computer wins!") elif player_select == "p" and comp_select == "r": player_score = player_score + 1 print("tYou win!") 5 Створення гри Rock, paper, scissors
  • 6. elif player_select == "p" and comp_select == "s": comp_score = comp_score + 1 print("tThe computer wins!") elif player_select == "s" and comp_select == "p": player_score = player_score + 1 print("tYou win!") elif player_select == "s" and comp_select == "r": comp_score = comp_score + 1 print("tThe computer wins!") print("-----------------------------------") print("------------Game Result------------") if player_score > comp_score: print("Congratulations! You win!") elif player_score < comp_score: print("Sorry... The computer wins!") else: print("Draw!") Давайте поетапно подивимося, що робить дана про- грама. Імпортуємо бібліотеку random. Вона гарантує, що гра буде чесною і ніхто не підгляне, який варіант вибрав користувач. Згенероване комп’ютером значення також буде випадковим: import random 6 Урок № 8
  • 7. Обов’язково потрібно подати інструкцію з правила- ми гри. Це слід зробити для того, щоб пояснити прави- ла новому користувачеві. print("Welcome to the game!") print(("The game consists of three rounds.") print("The winner is the one who scores more points.") print("t[r] - rocknt[s] - papernt[p] - scissors") Потім створюємо змінні і кожній присвоюємо нуль: player_score = 0 player_select = 0 comp_score = 0 comp_select = 0 Створюємо цикл for, щоб код всередині повторив- ся кілька разів. Таким чином, переможця буде визначе- но після трьох спроб: for i in range(3): ... ... З модуля random використовуємо функцію choice(), яка дозволяє вибрати випадкове значення з рядка: comp_select = random.choice("rps") 7 Створення гри Rock, paper, scissors
  • 8. Чи стикалися ви коли-небудь з помилками в про- грамі, грі або на будь-якому сайті? Найімовірніше, так. Щоб уникнути їхньої появи в програмі, давайте ретель- но продумаємо алгоритм роботи гри і проаналізуємо, які помилки можуть виникнути. Уявіть, що гравець не став читати правила гри і за- мість одного з допустимих значень (r, p, s) увів будь- який інший символ. Такі помилки і неточності необхід- но попередити заздалегідь. Тому додамо цикл while, який працюватиме до тих пір, поки користувач не введе правильне значення: while True: player_select = input("tYour choice:") if (player_select == "r") or (player_select == "s") or (player_select == "p"): break else: print("tError") Чудово! Користувач вже зробив свій вибір і ввів зна- чення, комп’ютер, в свою чергу, теж згенерував свій ва- ріант. Настав час зіставляти відповіді і вибирати перемож- ця. Отже, вище вже були описані умови перемоги. Тепер порівняємо, що вибрав player і що вибрав comp. Пере- можцю в кожному раунді зараховується 1 бал. Тут ми використовували на практиці вивчену раніше умовну 8 Урок № 8
  • 9. 9 Створення гри Rock, paper, scissors інструкцію if-elif і оператор порівняння and: if player_select == comp_select: print("tDraw!") elif player_select == "r" and comp_select == "s": player_score = player_score + 1 print("tYou win!") elif player_select == "r" and comp_select == "p": comp_score = comp_score + 1 print("tThe computer wins!") Ну що ж, на даному етапі ми вже реалізували всю логіку програми. Залишилося лише визначити, хто ж набрав найбільше балів, і повідомити про це гравцеві. Знову використовуємо умовну інструкцію if-elif- else, перевіряємо, хто набрав більше балів, і виводимо результат в консоль: if player_score > comp_score: print("Congratulations! You win!") elif player_score < comp_score: print("Sorry... The computer wins!") else: print("Draw!") Чудово! Ось ми і написали гру, а тепер якраз час її запустити. Спробуйте не тільки зіграти в неї, але і спро- буйте ввести некоректні значення, наприклад цифри 1, 2, 3.
  • 10. Рисунок 2 10 Урок № 8 Зверніть увагу, що на наступний рівень не можна перейти до тих пір, поки не буде введено коректно зна- чення (r, p, s). Створення гри Rock, paper, scissors, lizard, Spock Чи знаєте ви, що існує варіація створеної на занятті гри, яка називається Rock, paper, scissors, lizard, Spock! Її правила ідентичні до Rock, paper, scissors, проте умо- ви виграшу трохи складніші (рис. 2).
  • 11. 11 Створення гри Rock, paper, scissors Давайте доповнимо код створеної гри так, щоб ко- ристувачеві було запропоновано зробити вибір не з трьох, а з п’яти варіантів: [s] - scissors [p] - paper [r] - rock [l] - lizard [o] - spock Не забудьте підкоригувати правила гри. Тепер умов виграшу буде більше, а значить і гра буде значно цікаві- шою!
  • 12. Урок № 8 Створення гри Rock, paper, scissors © Комп'ютерна Академiя ШАГ www.itstep.org Усі права на фото-, аудіо- і відеотвори, що охороняються авторським правом і фраг- менти яких використані в матеріалі, належать їх законним власникам. Фрагменти творів використовуються в ілюстративних цілях в обсязі, виправданому поставле- ним завданням, у рамках учбового процесу і в учбових цілях, відповідно до ст. 1274 ч. 4 ГК РФ і ст. 21 і 23 Закони України «Про авторське право і суміжні права». Обсяг і спосіб цитованих творів відповідає прийнятим нормам, не завдає збитку нормально- му використанню об’єктів авторського права і не обмежує законні інтереси автора і правовласників. Цитовані фрагменти творів на момент використання не можуть бути замінені альтернативними аналогами, що не охороняються авторським правом, і відповідають критеріям добросовісного використання і чесного використання. Усі права захищені. Повне або часткове копіювання матеріалів заборонене. Узгодження використання творів або їх фрагментів здійснюється з авторами і правовласниками. Погоджене використання матеріалів можливе тільки якщо вказано джерело. Відповідальність за несанкціоноване копіювання і комерційне використання матеріалів визначається чинним законодавством України.