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
Не забудьте підкоригувати правила гри. Тепер умов
виграшу буде більше, а значить і гра буде значно цікаві-
шою!