Блог онлайн школы Пиксель

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

На языке Python дети могут создавать множество разных проектов, в том числе игры. Школа программирования “Пиксель” делится бесплатными уроками по освоению Python для детей от 10 лет. В этом материале мы расскажем, как легко, быстро и просто написать программу “Камень, ножницы, бумага” на языке программирования Python.

Первым, что мы запишем, будет импортирование нужных нам модулей — все они встроенные, то есть их не нужно скачивать отдельно.

tkinter random

Следующим шагом мы создадим класс Tk() и запишем его в переменную window. Сделав это, мы создали окно программы. После, чтобы программа запускалась, мы в конце кода должны активировать функцию mainloop(). Проверяем и у нас открывается окно программы.

камень ножницы бумага на питоне

Окно получилось небольшим. Чтобы настроить его размеры, мы используем параметр geometry, там мы запишем размер “800x400”. Также зададим название нашему окну с помощью параметра title.

камень ножницы бумага на python

После создадим класс Frame, в скобках мы должны указать, где мы хотим его создать, а следующей строкой задаем параметр его местоположения. Здесь мы используем относительные координаты, можно смотреть на них, как на проценты, то есть 1% по оси x, 1% по оси y и 98% ширины, 98% высоты. Также, чтобы вы увидели изменения в окне, мы зададим цвет данной рамке и после уберем его.

игра камень ножницы бумага на python

Теперь пришло время что-то написать в нашей программе, для этого мы используем класс Label. Здесь мы также указываем, в какое окно класса нужно поместить (помещаем его в нашу рамку), какой текст там будет находиться и снова указываем место на экране, на этот раз уже в обычных координатах. Текст получился небольшим, поэтому увеличим его шрифт.

Как записываются координаты? Они берут начало в левом верхнем углу, вправо идет ось x и вниз ось y, их размеры мы задавали вначале. Текст выставился так, как мы указали: по x=250, по y=20.

игра камень ножницы бумага на питоне

Дальше мы запишем еще 3 Label-а, куда поместим разный текст и поменяем стиль шрифта на normal. Под ними будет пространство для картинок.

код камень ножницы бумага на питоне

Специально для этой программы мы заранее скачали картинки бумаги, камня и ножниц в формате png. Загрузим их в нашу программу отдельным классом PhotoImage. Мы хотим добавлять их по одному названию, для этого нам нужно, чтобы они были в одной папке с программой, иначе придется указывать весь путь к ним. Копируем и также загружаем остальные картинки.

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

Теперь создадим окошко, в которое будут выводиться результаты игры, то есть объявление, кто победил. Из нового здесь появился параметр width — ширина и borderwidth — он задает ширину границ. Чтобы границы отобразились, запишем параметр relief. Также размещаем наше окошко по координатам.

как сделать камень ножницы бумага на python

И наконец сделаем кнопки. Они создаются с помощью класса Button() и в них можно указать текст, также уточним здесь размер текста и ширину кнопки. После размещаем ее на экране. И создаем еще две кнопки.

программа камень ножницы бумага на питоне

Пока наши кнопки ничего не делаю. Чтобы это исправить, мы создаем функции, которые прикрепим к ним. Первая функция — Rock(). В переменную user запишем выбор игрока, а в переменную computer — случайный выбор компьютера, именно для этого мы и добавили модуль random. Пишем random.choice() и в скобках — список, из которого нужно выбирать.

Дальше запишем условия: если выбор игрока и компьютера совпал, то текст в нашем label4 измениться на “Ничью”. Чтобы поменять какие-то параметры у класса, мы пишем функцию config, а в ней указываем, что нужно поменять. После запишем условие: если компьютер выбрал бумагу, то он победил, а если оставшийся вариант (ножницы), то победил человек.

Чтобы присоединить функцию, которую мы создали к кнопке, в ее параметрах мы пишем command и записываем название функции. Проверим.

Все работает, но картинки не выводятся. Чтобы они выводились, нужно записать в созданных нами ранее Label-ах для картинок названия. Для этого мы опять используем config и меняем название с пустого на нужное нам. Проверяем, все работает.

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

код камень ножницы бумага на python

игра камень ножницы бумага на питоне код

Полный код программы "Камень, ножницы, бумага" на Python:


from tkinter import *
import random


window = Tk()

window.geometry("800x400")
window.title("ROCK PAPER SCISSORS")
window.resizable(width=False, height=False)

frame = Frame(window)
frame.place(relx=0.01, rely=0.01, relwidth=0.98, relheight=0.98)

name = Label(frame, text="Rock Paper Scissors Player VS Computer", font="100")
name.place(x=250, y=20)

label1 = Label(frame, text="Player", font="normal 15")
label2 = Label(frame, text="VS", font="normal 15")
label3 = Label(frame, text="Computer", font="normal 15")

label1.place(x=80, y=50, width=100)
label2.place(x=350, y=50, width=100)
label3.place(x=600, y=50, width=100)

rock_png = PhotoImage(file="rock.png")
scissors_png = PhotoImage(file="scissors.png")
paper_png = PhotoImage(file="paper.png")

user_image = Label(frame, image="")
user_image.place(x=80, y=100)

comp_image = Label(frame, image="")
comp_image.place(x=600, y=100)


label4 = Label(
    frame, text="", font="normal 20", width=15, borderwidth=2, relief="solid"
)
label4.place(x=275, y=250)


def Rock():
    user = "Rock"
    computer = random.choice(["Rock", "Paper", "Scissors"])
    user_image.config(image=rock_png)
    if user == computer:
        label4.config(text="Tie")
        comp_image.config(image=rock_png)
    elif computer == "Paper":
        label4.config(text="Computer Wins!")
        comp_image.config(image=paper_png)
    else:
        label4.config(text="U WIN!")
        comp_image.config(image=scissors_png)


b1 = Button(frame, text="Rock", font=10, width=20, command=Rock)


def Paper():
    user = "Paper"
    user_image.config(image=paper_png)
    computer = random.choice(["Rock", "Paper", "Scissors"])
    if user == computer:
        label4.config(text="Tie")
        comp_image.config(image=paper_png)
    elif computer == "Scissors":
        label4.config(text="Computer Wins!")
        comp_image.config(image=scissors_png)
    else:
        label4.config(text="U WIN!")
        comp_image.config(image=rock_png)


b2 = Button(frame, text="Paper", font=10, width=20, command=Paper)


def Scissors():
    user = "Scissors"
    user_image.config(image=scissors_png)
    computer = random.choice(["Rock", "Paper", "Scissors"])
    if user == computer:
        label4.config(text="Tie")
        comp_image.config(image=scissors_png)
    elif computer == "Rock":
        label4.config(text="Computer Wins!")
        comp_image.config(image=rock_png)
    else:
        label4.config(text="U WIN!")
        comp_image.config(image=paper_png)


b3 = Button(frame, text="Scissors", font=10, width=20, command=Scissors)

b1.place(x=100, y=300)
b2.place(x=300, y=300)
b3.place(x=500, y=300)


window.mainloop()

Бесплатные видеоуроки Python для детей