Пропустить до содержимого

Как использовать игру Камень-Ножницы-Бумага в Python

[

Создание игры “Камень, ножницы, бумага” на Python

Игра в “Камень, ножницы, бумага” - отличный способ научиться программировать на Python. Вам потребуются множество инструментов, которые вы встретите в реальном мире, а также вы сможете проверить результаты своей работы, играя в игру! Одной из наиболее подходящих игр для начала вашего путешествия по программированию на Python является “камень, ножницы, бумага”.

В этом руководстве вы узнаете, как:

  • Создать свою собственную игру “камень, ножницы, бумага”
  • Получить пользовательский ввод с помощью функции input()
  • Играть несколько игр подряд с использованием цикла while
  • Создать более чистый код с помощью Enum и функций
  • Определить более сложные правила с помощью словаря

Что такое “Камень, ножницы, бумага”?

Возможно, вы уже играли в “камень, ножницы, бумага”. Может быть, вы использовали его для определения того, кто заплатит за ужин или кто будет выбирать игроков для команды.

Если вы не знакомы с этой игрой, “камень, ножницы, бумага” - это игра руками для двух или более игроков. Участники произносят “камень, ножницы, бумага” и одновременно формируют свои руки в форме камня (кулака), листа бумаги (ладонь повернута вниз) или ножниц (вытянутых двух пальцев). Правила простые:

  • Камень ломает ножницы.
  • Бумага закрывает камень.
  • Ножницы разрезают бумагу.

Теперь, когда вы знаете правила, вы можете начать думать о том, как они могут быть перенесены в код на Python.

Игра в одну игру “Камень, ножницы, бумага” на Python

import random

Отлично! Теперь вы можете использовать различные инструменты внутри random для случайного выбора действий компьютера в игре. Что дальше? Поскольку вашим пользователям также нужно будет иметь возможность выбирать действия, первое логическое, что вам потребуется - это способ принимать ввод от пользователя.

Получение пользовательского ввода

user_action = input("Введите выбор (камень, ножницы, бумага): ")

Таким образом, программа предложит пользователю ввести свой выбор и сохранит его в переменной для последующего использования. Теперь, когда пользователь выбрал действие, компьютеру нужно решить, что делать.

Выбор компьютера

Соревновательная игра в “камень, ножницы, бумага” вовлекает стратегию. Однако, вместо того, чтобы пытаться разработать модель для этого, вы можете просто использовать случайный выбор компьютера с помощью функции choice() из модуля random:

possible_actions = ["камень", "ножницы", "бумага"]
computer_action = random.choice(possible_actions)

Здесь вы создаете список возможных действий и затем случайным образом выбираете действие компьютера из этого списка. Теперь, когда у вас есть выборы обоих игроков, вы можете определить победителя.

Определение победителя

Правила определения победителя в игре “камень, ножницы, бумага” довольно просты:

  • “Камень” победит “ножницы”.
  • ”Бумага” победит “камень”.
  • ”Ножницы” победят “бумагу”.

Сравните выборы пользователя и компьютера и определите победителя на основе этих правил:

if user_action == computer_action:
print(f"Ничья! Вы оба выбрали {user_action}.")
elif (user_action == "камень" and computer_action == "ножницы") or (user_action == "бумага" and computer_action == "камень") or (user_action == "ножницы" and computer_action == "бумага"):
print(f"Вы победили! Вы выбрали {user_action}, компьютер выбрал {computer_action}.")
else:
print(f"Компьютер победил! Вы выбрали {user_action}, компьютер выбрал {computer_action}.")

Это код, который проверяет все случаи и выводит соответствующий результат. Теперь вы можете запустить игру “камень, ножницы, бумага” и поиграть с компьютером!

Игра несколько игр подряд

Вы, вероятно, хотите, чтобы ваша игра “камень, ножницы, бумага” была более интересной, и вам хочется сыграть несколько игр подряд. Это можно сделать с помощью цикла while. Вот как это можно сделать:

while True:
user_action = input("Введите выбор (камень, ножницы, бумага) или 'выход' для завершения игры: ")
if user_action == "выход":
break
computer_action = random.choice(possible_actions)
if user_action == computer_action:
print(f"Ничья! Вы оба выбрали {user_action}.")
elif (user_action == "камень" and computer_action == "ножницы") or (user_action == "бумага" and computer_action == "камень") or (user_action == "ножницы" and computer_action == "бумага"):
print(f"Вы победили! Вы выбрали {user_action}, компьютер выбрал {computer_action}.")
else:
print(f"Компьютер победил! Вы выбрали {user_action}, компьютер выбрал {computer_action}.")

Теперь игра будет продолжаться до тех пор, пока пользователь не введет “выход” в качестве своего выбора.

Использование Enum для описания действий

Чтобы ваш код стал более понятным и читаемым, вы можете использовать Enum для описания действий “камень”, “ножницы” и “бумага”. Вот какой код будет выглядеть с использованием Enum:

from enum import Enum
class Action(Enum):
ROCK = 1
PAPER = 2
SCISSORS = 3

Теперь вы можете использовать Action.ROCK, Action.PAPER и Action.SCISSORS вместо строковых значений для действий. Например:

user_action = Action.ROCK
computer_action = random.choice(list(Action))

Таким образом, ваш код будет более читаемым и позволит избежать ошибок типизации.

Создание потока вашей программы

Прежде, чем двигаться дальше, будет полезно создать поток программы для вашей игры “камень, ножницы, бумага”. Вы можете использовать следующий поток на основе заданных шагов и условий:

1. Получить выбор пользователя с помощью `input()`.
2. Если пользователь выбрал "выход", завершить игру.
3. Сгенерировать действие компьютера.
4. Определить победителя.
5. Повторить шаги 1-4 для следующей игры.

Структурированный поток поможет вам понять, как ваш код должен работать, и сделает его более читаемым и поддерживаемым в будущем.

Разделение вашего кода на функции

Ваш код может стать довольно длинным, особенно если вы добавите дополнительную функциональность, такую как игра несколько игр подряд или расширенные правила для игры “камень, ножницы, бумага”. Чтобы сделать ваш код более чистым и организованным, вы можете разделить его на функции. Вот несколько функций, которые могут быть полезными:

def get_user_action():
return input("Введите выбор (камень, ножницы, бумага) или 'выход' для завершения игры: ")
def get_computer_action():
return random.choice(list(Action))
def determine_winner(user_action, computer_action):
if user_action == computer_action:
return "Ничья!"
elif (user_action == Action.ROCK and computer_action == Action.SCISSORS) or (user_action == Action.PAPER and computer_action == Action.ROCK) or (user_action == Action.SCISSORS and computer_action == Action.PAPER):
return "Вы победили!"
else:
return "Компьютер победил!"
while True:
user_action = get_user_action()
if user_action == "выход":
break
computer_action = get_computer_action()
winner = determine_winner(user_action, computer_action)
print(f"{winner} Вы выбрали {user_action}, компьютер выбрал {computer_action}.")

Таким образом, ваш код будет разделен на более мелкие и читаемые функции, каждая из которых выполняет свою часть работы.

”Камень, ножницы, бумага” … “Ящерица, Спок”

Если вы хотите добавить больше разнообразия в свою игру “камень, ножницы, бумага”, вы можете реализовать правила игры “камень, ножницы, бумага, ящерица, Спок”, которые были предложены в шоу “The Big Bang Theory”. В этих правилах действий будет пять, а не три. Вот какие правила будет иметь ваш код:

- "камень" разбивает "ножницы" и "ящерицу".
- "бумага" покрывает "камень" и "Спока".
- "ножницы" режут "бумагу" и "ящерицу".
- "ящерица" ядовита для "Спока" и съедает "бумагу".
- "Спок" испаряет "камень" и сломает "ножницы".

Вы можете применить эти правила, добавив дополнительные условия в вашу функцию determine_winner(). Например:

def determine_winner(user_action, computer_action):
if user_action == computer_action:
return "Ничья!"
elif (user_action == Action.ROCK and (computer_action == Action.SCISSORS or computer_action == Action.LIZARD)) or (user_action == Action.PAPER and (computer_action == Action.ROCK or computer_action == Action.SPOCK)) or (user_action == Action.SCISSORS and (computer_action == Action.PAPER or computer_action == Action.LIZARD)) or (user_action == Action.LIZARD and (computer_action == Action.SPOCK or computer_action == Action.PAPER)) or (user_action == Action.SPOCK and (computer_action == Action.ROCK or computer_action == Action.SCISSORS)):
return "Вы победили!"
else:
return "Компьютер победил!"

Теперь ваша игра стала еще интереснее с добавлением новых правил!

Заключение

Игра “камень, ножницы, бумага” - отличный способ научиться программировать на Python и применить свои навыки в создании интерактивных программ. В этом руководстве вы узнали, как создать свою собственную игру “камень, ножницы, бумага” с использованием подробно прокомментированного кода и шаг за шагом объяснений. Вы также узнали, как добавить дополнительные функциональные возможности, такие как игра несколько игр подряд или расширенные правила для игры. Теперь вы можете играть в “камень, ножницы, бумага” и наслаждаться программированием на Python!