SlideShare a Scribd company logo
1 of 12
Download to read offline
Урок № 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

Backend.AI: 왜 우리는 우리 핵심 제품을 오픈소스화 했는가
Backend.AI: 왜 우리는 우리 핵심 제품을 오픈소스화 했는가Backend.AI: 왜 우리는 우리 핵심 제품을 오픈소스화 했는가
Backend.AI: 왜 우리는 우리 핵심 제품을 오픈소스화 했는가Lablup Inc.
 
Anti-tampering in Android and Take Look at Google SafetyNet Attestation API
Anti-tampering in Android and Take Look at Google SafetyNet Attestation APIAnti-tampering in Android and Take Look at Google SafetyNet Attestation API
Anti-tampering in Android and Take Look at Google SafetyNet Attestation APIArash Ramez
 
Hunting Lateral Movement in Windows Infrastructure
Hunting Lateral Movement in Windows InfrastructureHunting Lateral Movement in Windows Infrastructure
Hunting Lateral Movement in Windows InfrastructureSergey Soldatov
 
Attacking Windows NDIS Drivers
Attacking Windows NDIS DriversAttacking Windows NDIS Drivers
Attacking Windows NDIS DriversKique Nissim
 
Beyond REST? Building data services with XMPP
Beyond REST? Building data services with XMPPBeyond REST? Building data services with XMPP
Beyond REST? Building data services with XMPPKellan
 
лекція 5 2
лекція 5 2лекція 5 2
лекція 5 2cit-cit
 
Android Multimedia Framework
Android Multimedia FrameworkAndroid Multimedia Framework
Android Multimedia FrameworkPicker Weng
 
Experience with jemalloc
Experience with jemallocExperience with jemalloc
Experience with jemallocKit Chan
 
[112] 모바일 환경에서 실시간 Portrait Segmentation 구현하기
[112] 모바일 환경에서 실시간 Portrait Segmentation 구현하기[112] 모바일 환경에서 실시간 Portrait Segmentation 구현하기
[112] 모바일 환경에서 실시간 Portrait Segmentation 구현하기NAVER D2
 
Презентація викладача ЗОШ №6 Пашко М.Г.
Презентація викладача ЗОШ №6 Пашко М.Г.Презентація викладача ЗОШ №6 Пашко М.Г.
Презентація викладача ЗОШ №6 Пашко М.Г.Varlakov Vitalii
 
Android Camera Architecture
Android Camera ArchitectureAndroid Camera Architecture
Android Camera ArchitecturePicker Weng
 
Predictive analytics in the gaming industry
Predictive analytics in the gaming industryPredictive analytics in the gaming industry
Predictive analytics in the gaming industryIntelligencia Limited
 
Object Oriented Exploitation: New techniques in Windows mitigation bypass
Object Oriented Exploitation: New techniques in Windows mitigation bypassObject Oriented Exploitation: New techniques in Windows mitigation bypass
Object Oriented Exploitation: New techniques in Windows mitigation bypassSam Thomas
 
Наказ МВС від 30.09.2008 № 505 "Про заходи щодо вдосконалення системи..
Наказ МВС від 30.09.2008 № 505 "Про заходи щодо вдосконалення системи..Наказ МВС від 30.09.2008 № 505 "Про заходи щодо вдосконалення системи..
Наказ МВС від 30.09.2008 № 505 "Про заходи щодо вдосконалення системи..Eugene Krapyvin
 
Призначення балансу та його побудова
Призначення балансу та його побудоваПризначення балансу та його побудова
Призначення балансу та його побудоваIrisha56
 
How DeepMind Mastered The Game Of Go
How DeepMind Mastered The Game Of GoHow DeepMind Mastered The Game Of Go
How DeepMind Mastered The Game Of GoTim Riser
 

What's hot (20)

Binary Reading in C#
Binary Reading in C#Binary Reading in C#
Binary Reading in C#
 
Backend.AI: 왜 우리는 우리 핵심 제품을 오픈소스화 했는가
Backend.AI: 왜 우리는 우리 핵심 제품을 오픈소스화 했는가Backend.AI: 왜 우리는 우리 핵심 제품을 오픈소스화 했는가
Backend.AI: 왜 우리는 우리 핵심 제품을 오픈소스화 했는가
 
Anti-tampering in Android and Take Look at Google SafetyNet Attestation API
Anti-tampering in Android and Take Look at Google SafetyNet Attestation APIAnti-tampering in Android and Take Look at Google SafetyNet Attestation API
Anti-tampering in Android and Take Look at Google SafetyNet Attestation API
 
Hunting Lateral Movement in Windows Infrastructure
Hunting Lateral Movement in Windows InfrastructureHunting Lateral Movement in Windows Infrastructure
Hunting Lateral Movement in Windows Infrastructure
 
Attacking Windows NDIS Drivers
Attacking Windows NDIS DriversAttacking Windows NDIS Drivers
Attacking Windows NDIS Drivers
 
Beyond REST? Building data services with XMPP
Beyond REST? Building data services with XMPPBeyond REST? Building data services with XMPP
Beyond REST? Building data services with XMPP
 
лекція 5 2
лекція 5 2лекція 5 2
лекція 5 2
 
Android Multimedia Framework
Android Multimedia FrameworkAndroid Multimedia Framework
Android Multimedia Framework
 
淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道 淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道
 
Experience with jemalloc
Experience with jemallocExperience with jemalloc
Experience with jemalloc
 
[112] 모바일 환경에서 실시간 Portrait Segmentation 구현하기
[112] 모바일 환경에서 실시간 Portrait Segmentation 구현하기[112] 모바일 환경에서 실시간 Portrait Segmentation 구현하기
[112] 모바일 환경에서 실시간 Portrait Segmentation 구현하기
 
Interpreter, Compiler, JIT from scratch
Interpreter, Compiler, JIT from scratchInterpreter, Compiler, JIT from scratch
Interpreter, Compiler, JIT from scratch
 
Презентація викладача ЗОШ №6 Пашко М.Г.
Презентація викладача ЗОШ №6 Пашко М.Г.Презентація викладача ЗОШ №6 Пашко М.Г.
Презентація викладача ЗОШ №6 Пашко М.Г.
 
Teismo medicina
Teismo medicinaTeismo medicina
Teismo medicina
 
Android Camera Architecture
Android Camera ArchitectureAndroid Camera Architecture
Android Camera Architecture
 
Predictive analytics in the gaming industry
Predictive analytics in the gaming industryPredictive analytics in the gaming industry
Predictive analytics in the gaming industry
 
Object Oriented Exploitation: New techniques in Windows mitigation bypass
Object Oriented Exploitation: New techniques in Windows mitigation bypassObject Oriented Exploitation: New techniques in Windows mitigation bypass
Object Oriented Exploitation: New techniques in Windows mitigation bypass
 
Наказ МВС від 30.09.2008 № 505 "Про заходи щодо вдосконалення системи..
Наказ МВС від 30.09.2008 № 505 "Про заходи щодо вдосконалення системи..Наказ МВС від 30.09.2008 № 505 "Про заходи щодо вдосконалення системи..
Наказ МВС від 30.09.2008 № 505 "Про заходи щодо вдосконалення системи..
 
Призначення балансу та його побудова
Призначення балансу та його побудоваПризначення балансу та його побудова
Призначення балансу та його побудова
 
How DeepMind Mastered The Game Of Go
How DeepMind Mastered The Game Of GoHow DeepMind Mastered The Game Of Go
How DeepMind Mastered The Game Of Go
 

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_1563259002PavloTsiura
 
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_1563258982PavloTsiura
 
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_1563258932PavloTsiura
 
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_1563258907PavloTsiura
 
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_1563258882PavloTsiura
 
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_1563258855PavloTsiura
 
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_1563258828PavloTsiura
 
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_1563258764PavloTsiura
 

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

Заняття у різновіковій групі. Особливості планування та проведення з дітьми д...
Заняття у різновіковій групі. Особливості планування та проведення з дітьми д...Заняття у різновіковій групі. Особливості планування та проведення з дітьми д...
Заняття у різновіковій групі. Особливості планування та проведення з дітьми д...ssuser7541ef1
 
Ім’я чернігівця на карті Місяця. ЮРІЙ МЕЗЕНЦЕВ
Ім’я чернігівця на карті Місяця. ЮРІЙ МЕЗЕНЦЕВІм’я чернігівця на карті Місяця. ЮРІЙ МЕЗЕНЦЕВ
Ім’я чернігівця на карті Місяця. ЮРІЙ МЕЗЕНЦЕВestet13
 
Пасивний будинок Енергоефективність ОБСБД.pptx
Пасивний будинок Енергоефективність ОБСБД.pptxПасивний будинок Енергоефективність ОБСБД.pptx
Пасивний будинок Енергоефективність ОБСБД.pptxssuserd1824d
 
Графіки стабілізаційних відключень у Чернігові та області
Графіки стабілізаційних відключень у Чернігові та областіГрафіки стабілізаційних відключень у Чернігові та області
Графіки стабілізаційних відключень у Чернігові та області24tvua
 
Презентація про виникнення балади., особливості
Презентація про виникнення балади., особливостіПрезентація про виникнення балади., особливості
Презентація про виникнення балади., особливостіAdriana Himinets
 
Особливості застосування інструментарію оцінювання готовності дитини до навча...
Особливості застосування інструментарію оцінювання готовності дитини до навча...Особливості застосування інструментарію оцінювання готовності дитини до навча...
Особливості застосування інструментарію оцінювання готовності дитини до навча...ssuser7541ef1
 
Хвороби картоплі та заходи боротьби з ними
Хвороби картоплі та заходи боротьби з нимиХвороби картоплі та заходи боротьби з ними
Хвороби картоплі та заходи боротьби з нимиtetiana1958
 
70 років тому – початок Кенгірського повстання
70 років тому – початок Кенгірського повстання70 років тому – початок Кенгірського повстання
70 років тому – початок Кенгірського повстанняestet13
 
Графіки відключень у Вінниці і області на 2024 рік
Графіки відключень у Вінниці і області на 2024 рікГрафіки відключень у Вінниці і області на 2024 рік
Графіки відключень у Вінниці і області на 2024 рік24tvua
 
Анастасія Крижановська. Як AI-революція вплинула на бізнес контент-агентства?
Анастасія Крижановська. Як AI-революція вплинула на бізнес контент-агентства?Анастасія Крижановська. Як AI-революція вплинула на бізнес контент-агентства?
Анастасія Крижановська. Як AI-революція вплинула на бізнес контент-агентства?Collaborator.pro
 
Тренінг про тренінг. Педагогам ЗДО проте як скласти та провести тренінг у кол...
Тренінг про тренінг. Педагогам ЗДО проте як скласти та провести тренінг у кол...Тренінг про тренінг. Педагогам ЗДО проте як скласти та провести тренінг у кол...
Тренінг про тренінг. Педагогам ЗДО проте як скласти та провести тренінг у кол...ssuser7541ef1
 
80 років від часу депортації з Криму кримських татар і осіб інших національно...
80 років від часу депортації з Криму кримських татар і осіб інших національно...80 років від часу депортації з Криму кримських татар і осіб інших національно...
80 років від часу депортації з Криму кримських татар і осіб інших національно...estet13
 
Альфрейні опорядження поверхонь ТООРтаПД.pptx
Альфрейні опорядження поверхонь ТООРтаПД.pptxАльфрейні опорядження поверхонь ТООРтаПД.pptx
Альфрейні опорядження поверхонь ТООРтаПД.pptxssuserd1824d
 

Recently uploaded (13)

Заняття у різновіковій групі. Особливості планування та проведення з дітьми д...
Заняття у різновіковій групі. Особливості планування та проведення з дітьми д...Заняття у різновіковій групі. Особливості планування та проведення з дітьми д...
Заняття у різновіковій групі. Особливості планування та проведення з дітьми д...
 
Ім’я чернігівця на карті Місяця. ЮРІЙ МЕЗЕНЦЕВ
Ім’я чернігівця на карті Місяця. ЮРІЙ МЕЗЕНЦЕВІм’я чернігівця на карті Місяця. ЮРІЙ МЕЗЕНЦЕВ
Ім’я чернігівця на карті Місяця. ЮРІЙ МЕЗЕНЦЕВ
 
Пасивний будинок Енергоефективність ОБСБД.pptx
Пасивний будинок Енергоефективність ОБСБД.pptxПасивний будинок Енергоефективність ОБСБД.pptx
Пасивний будинок Енергоефективність ОБСБД.pptx
 
Графіки стабілізаційних відключень у Чернігові та області
Графіки стабілізаційних відключень у Чернігові та областіГрафіки стабілізаційних відключень у Чернігові та області
Графіки стабілізаційних відключень у Чернігові та області
 
Презентація про виникнення балади., особливості
Презентація про виникнення балади., особливостіПрезентація про виникнення балади., особливості
Презентація про виникнення балади., особливості
 
Особливості застосування інструментарію оцінювання готовності дитини до навча...
Особливості застосування інструментарію оцінювання готовності дитини до навча...Особливості застосування інструментарію оцінювання готовності дитини до навча...
Особливості застосування інструментарію оцінювання готовності дитини до навча...
 
Хвороби картоплі та заходи боротьби з ними
Хвороби картоплі та заходи боротьби з нимиХвороби картоплі та заходи боротьби з ними
Хвороби картоплі та заходи боротьби з ними
 
70 років тому – початок Кенгірського повстання
70 років тому – початок Кенгірського повстання70 років тому – початок Кенгірського повстання
70 років тому – початок Кенгірського повстання
 
Графіки відключень у Вінниці і області на 2024 рік
Графіки відключень у Вінниці і області на 2024 рікГрафіки відключень у Вінниці і області на 2024 рік
Графіки відключень у Вінниці і області на 2024 рік
 
Анастасія Крижановська. Як AI-революція вплинула на бізнес контент-агентства?
Анастасія Крижановська. Як AI-революція вплинула на бізнес контент-агентства?Анастасія Крижановська. Як AI-революція вплинула на бізнес контент-агентства?
Анастасія Крижановська. Як AI-революція вплинула на бізнес контент-агентства?
 
Тренінг про тренінг. Педагогам ЗДО проте як скласти та провести тренінг у кол...
Тренінг про тренінг. Педагогам ЗДО проте як скласти та провести тренінг у кол...Тренінг про тренінг. Педагогам ЗДО проте як скласти та провести тренінг у кол...
Тренінг про тренінг. Педагогам ЗДО проте як скласти та провести тренінг у кол...
 
80 років від часу депортації з Криму кримських татар і осіб інших національно...
80 років від часу депортації з Криму кримських татар і осіб інших національно...80 років від часу депортації з Криму кримських татар і осіб інших національно...
80 років від часу депортації з Криму кримських татар і осіб інших національно...
 
Альфрейні опорядження поверхонь ТООРтаПД.pptx
Альфрейні опорядження поверхонь ТООРтаПД.pptxАльфрейні опорядження поверхонь ТООРтаПД.pptx
Альфрейні опорядження поверхонь ТООРтаПД.pptx
 

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 Закони України «Про авторське право і суміжні права». Обсяг і спосіб цитованих творів відповідає прийнятим нормам, не завдає збитку нормально- му використанню об’єктів авторського права і не обмежує законні інтереси автора і правовласників. Цитовані фрагменти творів на момент використання не можуть бути замінені альтернативними аналогами, що не охороняються авторським правом, і відповідають критеріям добросовісного використання і чесного використання. Усі права захищені. Повне або часткове копіювання матеріалів заборонене. Узгодження використання творів або їх фрагментів здійснюється з авторами і правовласниками. Погоджене використання матеріалів можливе тільки якщо вказано джерело. Відповідальність за несанкціоноване копіювання і комерційне використання матеріалів визначається чинним законодавством України.