Python Tkinter Tutorial: создайте игру «камень-ножницы-бумага»

создайте игру камень-ножницы-бумага Программирование и разработка

Эта серия статей призвана познакомить вас с Tkinter, стандартным интерфейсом Python для набора инструментов Tk GUI, и помочь вам создавать интерактивные игры, которые вы можете добавить в свое резюме.

Прохождение игры камень-ножницы-бумага

В этой статье мы разработаем модифицированную версию известной детской игры «Камень-ножницы-бумага». Если вы смотрели «Теорию большого мешка» (сезон 2, эпизод 8), Шелдон Купер расширяет игру «Камень-ножницы-бумага», добавляя еще два объекта: Ящерицу и Спока.

Давайте разработаем ту же игру, используя Python 3 и Tkinter. Мы можем назвать нашу игру Камень-Ножницы-Бумага-Ящерица-Спок.

Правила и как играть

  • Камень дробит ножницы
  • Камень сокрушает Ящерицу
  • Бумажные обложки Камень
  • Бумага опровергает Спока
  • Ножницы режут бумагу
  • Ящерица обезглавливает ножницами
  • Ящерица отравляет Спока
  • Также ящерица ест бумагу
  • Спок разбивает ножницы
  • Спок испаряет Камень
  • Два одинаковых объекта — ничья

Прохождение игры камень-ножницы-бумага

Прохождение игры камень-ножницы-бумага2

Прохождение программы

Когда пользователь запускает программу, он должен щелкнуть один из пяти доступных объектов:

  • Камень
  • Бумага
  • Ножницы
  • Ящерица
  • Спок

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

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

Когда пользователь нажимает любую кнопку

Реализация на Python (10 шагов)

Теперь, когда у нас есть представление о том, что повлечет за собой игра «камень-ножницы-бумага», давайте шаг за шагом пройдемся по процессу на Python. Если вы еще не знаете, как настроить Tkinter, ознакомьтесь с нашей первой статьей в этой серии, чтобы получить краткое руководство.

1. Импортируйте необходимые библиотеки.

#Import the required libraries :
from tkinter import *
import random
import simpleaudio as sa
  • tkinter: добавить виджеты в наше приложение
  • random: для генерации случайного числа
  • simpleaudio: для воспроизведения звуковых файлов

2. Создайте главное окно tkinter

root = Tk()
root.configure(bg=»#000000″)
root.geometry(‘+0+0’)
root.iconbitmap(«Game.ico»)
root.title(«Rock-Paper-Scissor-Lizard-Spock»)
root.resizable(width=False,height=False)
  • root = Tk( ): Это используется для инициализации нашего модуля tkinter.
  • root.configure( ): Мы используем это, чтобы указать цвет фона для нашего приложения. В нашем случае цвет фона будет черным.
  • root.geometry( ): Мы используем это, чтобы указать, в каком месте будет открываться окно нашего приложения. Он откроется в верхнем левом углу.
  • root.iconbitmap( ): Мы используем его, чтобы установить значок в строке заголовка для окна нашего приложения. Эта функция принимает только.icoфайлы.
  • root.title( ): Мы используем его, чтобы задать заголовок для нашего приложения.
  • root.resizable( ): Здесь мы используем его, чтобы пользователи не могли изменять размер нашего главного окна.

3. Импорт звуковых файлов

#To play sound files :
start = sa.WaveObject.from_wave_file(«Start.wav»)
Win = sa.WaveObject.from_wave_file(«Win.wav»)
Lose = sa.WaveObject.from_wave_file(«Lose.wav»)
Draw = sa.WaveObject.from_wave_file(«Draw.wav»)
start.play()

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

Следует отметить, что он принимает только.wavфайлы. Прежде всего нам нужно загрузить звуковой файл в объект. Затем мы можем воспроизвести его, используя.play( )метод, когда это необходимо.

4. Загрузка изображений для нашего приложения

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

#Hand images :
rockHandPhoto = PhotoImage(file=»Rock_1.png»)
paperHandPhoto = PhotoImage(file=»Paper_1.png»)
scissorHandPhoto = PhotoImage(file=»Scissor_1.png»)
lizardHandPhoto = PhotoImage(file=»Lizard_1.png»)
spockHandPhoto = PhotoImage(file=»Spock_1.png»)
#Graphical images :
rockPhoto = PhotoImage(file=»Rock_P.png»)
paperPhoto = PhotoImage(file=»Paper_P.png»)
scissorPhoto = PhotoImage(file=»Scissor_P.png»)
lizardPhoto = PhotoImage(file=»Lizard_P.png»)
spockPhoto = PhotoImage(file=»Spock_P.png»)
#Decision image :
decisionPhoto = PhotoImage(file=»Decision_Final.png»)
#Result images :
winPhoto = PhotoImage(file=»G_WIN.png»)
losePhoto = PhotoImage(file=»G_LOST.png»)
tiePhoto = PhotoImage(file=»G_DRAW.png»)

Во-первых, у нас есть изображения рук для наших объектов. Все пять изображений будут показаны пользователю в начале игры. Пользователь должен выбрать один объект из этих изображений.

Читайте также:  Как стать геймдизайнером

После того, как пользователь щелкает изображение, наша программа покажет нам графическое изображение этого объекта. Он должен выбрать один объект, и наша программа также выберет один объект. Наша программа покажет только эти два графических изображения, а затем все остальные исчезнут.

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

  • Если пользователь выиграет
  • Если пользователь проиграет
  • А также если есть галстук

5. Добавьте виджеты Tkinter

#Initialize the button variables :
rockHandButton = » «
paperHandButton = » «
scissorHandButton = » «
lizardHandButton= » «
spockHandButton = » «
#Create the result button :
resultButton = Button(root,image=decisionPhoto)
#Set the variable to True
click = True
  • Инициализируйте переменную для пяти кнопок.
  • Здесь мы создаем кнопку результата, которая покажет нам окончательный результат.
  • Мы устанавливаем переменную click в значение True, чтобы наша программа продолжала работать, пока не будет установлено значение False. Мы увидим больше об этом в следующих пунктах.

6. Play( ) функция

def play():
    global rockHandButton,paperHandButton,scissorHandButton,lizardHandButton,spockHandButton
    #Set images and commands for buttons :
    rockHandButton = Button(root,image = rockHandPhoto, command=lambda:youPick(«Rock»))
    paperHandButton = Button(root,image = paperHandPhoto, command=lambda:youPick(«Paper»))
    scissorHandButton = Button(root,image = scissorHandPhoto, command=lambda:youPick(«Scissor»))
    lizardHandButton = Button(root,image= lizardHandPhoto,command=lambda:youPick(«Lizard»))
    spockHandButton = Button(root,image= spockHandPhoto,command=lambda:youPick(«Spock»))
    #Place the buttons on window :
    rockHandButton.grid(row=0,column=0)
    paperHandButton.grid(row=0,column=1)
    scissorHandButton.grid(row=0,column=2)
    lizardHandButton.grid(row=0,column=3)
    spockHandButton.grid(row=0,column=4)
    #Add space :
    root.grid_rowconfigure(1, minsize=50)
    #Place result button on window :
    resultButton.grid(row=2,column=0,columnspan=5)

Здесь мы создаем кнопки для наших объектов. Мы собираемся установить изображения для кнопок, и когда она будет нажата, она перейдет к youPick( )функции со строковым именем объекта, по которому щелкнули.

Затем мы размещаем кнопки в главном окне с помощью.grid( )метода. Здесь мы добавляем пустое место в первой строке с.grid_rowconfigure( ). Затем мы помещаем нашу кнопку результата во вторую строку. Мы используем columnspanдля центрирования кнопку результата.

7. Очередь компьютера

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

def computerPick():
    choice = random.choice([«Rock»,»Paper»,»Scissor»,»Lizard»,»Spock»])
    return choice

8. Основная функция: youPick( )

В этой функции наша программа будет отображать графические изображения для выбранных объектов. Он удалит остальные объекты. Он также будет применять набор правил для получения результата.

def youPick(yourChoice):
    global click
    compPick = computerPick()
    if click==True:

Мы сохраняем выбор компьютера в compPickпеременной. Мы будем использовать его для определения результата.

Пользователь выбирает камень:

Этот блок кода используется, если пользователь выбирает Rock. Команда в play( )функции отправляет строку, которая представляет объект, выбранный пользователем. Мы храним его в yourChoiceпеременной. Теперь у компьютера есть пять возможностей.

Теперь нам нужно разработать правила для каждого из них. Далее обратите внимание, что когда пользователь и компьютер выбрали объект, они не могут его изменить. Вот почему мы меняем переменную click на False.

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

Мы хотим, чтобы остальные три изображения исчезли. Чтобы они исчезли, мы используем.grid_forget( ). Он также будет воспроизводить звук отрисовки. Теперь разработаем аналогичное правило для остальных объектов.

if compPick == «Rock»:
                paperHandButton.configure(image=rockPhoto)
                resultButton.configure(image=tiePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Draw.play()
                click = False
            elif compPick == «Paper»:
                paperHandButton.configure(image=paperPhoto)
                scissorHandButton.grid_forget()
                resultButton.configure(image=losePhoto)
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            elif compPick == «Scissor»:
                paperHandButton.configure(image=scissorPhoto)
                scissorHandButton.grid_forget()
                resultButton.configure(image=winPhoto)
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False
            elif compPick ==»Lizard»:
                paperHandButton.configure(image=lizardPhoto)
                scissorHandButton.grid_forget()
                resultButton.configure(image=winPhoto)
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False
            else :
                paperHandButton.configure(image=spockPhoto)
                scissorHandButton.grid_forget()
                resultButton.configure(image=losePhoto)
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False

Пользователь выбирает бумагу:

См. Правила сверху, чтобы понять правила, когда пользователь выбирает Paper. Посмотрите на приведенный ниже код, который подчиняется тем же правилам, что и Rock.

elif yourChoice == «Paper»:
            rockHandButton.configure(image=paperPhoto)
            if compPick == «Rock»:
                paperHandButton.configure(image=rockPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            elif compPick == «Paper»:
                paperHandButton.configure(image=paperPhoto)
                resultButton.configure(image=tiePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Draw.play()
                click = False
            elif compPick == «Scissor»:
                paperHandButton.configure(image=scissorPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            elif compPick ==»Lizard»:
                paperHandButton.configure(image=lizardPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            else :
                paperHandButton.configure(image=spockPhoto)
                resultButton.configure(image=winPhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False

Пользователь выбирает ножницы:

См. Правила сверху, чтобы понять правила, когда пользователь выбирает ножницы. Посмотрите на приведенный ниже код, который подчиняется тем же правилам, что и Rock and Paper.

elif yourChoice==»Scissor»:
            rockHandButton.configure(image=scissorPhoto)
            if compPick == «Rock»:
                paperHandButton.configure(image=rockPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            elif compPick == «Paper»:
                paperHandButton.configure(image=paperPhoto)
                resultButton.configure(image=winPhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False
            elif compPick==»Scissor»:
                paperHandButton.configure(image=scissorPhoto)
                resultButton.configure(image=tiePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Draw.play()
                click = False
            elif compPick == «Lizard»:
                paperHandButton.configure(image=lizardPhoto)
                resultButton.configure(image=winPhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False
            else:
                paperHandButton.configure(image=spockPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False

Пользователь выбирает ящерицу

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

elif yourChoice==»Lizard»:
            rockHandButton.configure(image=lizardPhoto)
            if compPick == «Rock»:
                paperHandButton.configure(image=rockPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            elif compPick == «Paper»:
                paperHandButton.configure(image=paperPhoto)
                resultButton.configure(image=winPhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False
            elif compPick==»Scissor»:
                paperHandButton.configure(image=scissorPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            elif compPick == «Lizard»:
                paperHandButton.configure(image=lizardPhoto)
                resultButton.configure(image=tiePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Draw.play()
                click = False
            else:
                paperHandButton.configure(image=spockPhoto)
                resultButton.configure(image=winPhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False

Пользователь, выбирающий Спока:

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

elif yourChoice==»Spock»:
            rockHandButton.configure(image=spockPhoto)
            if compPick == «Rock»:
                paperHandButton.configure(image=rockPhoto)
                resultButton.configure(image=winPhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False
            elif compPick == «Paper»:
                paperHandButton.configure(image=paperPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            elif compPick==»Scissor»:
                paperHandButton.configure(image=scissorPhoto)
                resultButton.configure(image=winPhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False
            elif compPick == «Lizard»:
                paperHandButton.configure(image=lizardPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            else:
                paperHandButton.configure(image=spockPhoto)
                resultButton.configure(image=tiePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Draw.play()
                click = False

9. Играть снова

После получения результатов, если мы хотим снова сыграть, нам просто нужно нажать на любую из кнопок. Он превратит его в оригинальные изображения рук. Теперь мы должны вернуть те исчезнувшие изображения. Мы установим значение переменной click равным True. Затем мы воспроизведем начальный звуковой файл, чтобы, когда пользователь входит в новую игру, воспроизводился звук.

 else:
        #To reset the game :
        if yourChoice==»Rock» or yourChoice==»Paper» or yourChoice==»Scissor» or yourChoice==»Lizard» or yourChoice==»Spock»:
            rockHandButton.configure(image=rockHandPhoto)
            paperHandButton.configure(image=paperHandPhoto)
            scissorHandButton.configure(image=scissorHandPhoto)
            lizardHandButton.configure(image=lizardHandPhoto)
            spockHandButton.configure(image=spockHandPhoto)
            resultButton.configure(image=decisionPhoto)
            #Get back the deleted buttons :
            scissorHandButton.grid(row=0,column=2)
            lizardHandButton.grid(row=0,column=3)
            spockHandButton.grid(row=0,column=4)
            #Set click = True :
            click=True
            #Play the sound file :
            start.play()

10. Вызов функции

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

#Calling the play function :
play()
#Enter the main loop :
root.mainloop()

Собираем все вместе

Взгляните на полный код этой игры Python Tkinter.

Читайте также:  Как (безопасно) сделать перенаправление PHP

Хотите скачать код и изображения? Вы можете скачать все необходимые изображения и код здесь.

#Import the required libraries :
from tkinter import *
import random
import simpleaudio as sa
root = Tk()
root.configure(bg=»#000000″)
root.geometry(‘+0+0’)
root.iconbitmap(«Game.ico»)
root.title(«Rock-Paper-Scissor-Lizard-Spock»)
root.resizable(width=False,height=False)
#To play sound files :
start = sa.WaveObject.from_wave_file(«Start.wav»)
Win = sa.WaveObject.from_wave_file(«Win.wav»)
Lose = sa.WaveObject.from_wave_file(«Lose.wav»)
Draw = sa.WaveObject.from_wave_file(«Draw.wav»)
start.play()
#Hand images :
rockHandPhoto = PhotoImage(file=»Rock_1.png»)
paperHandPhoto = PhotoImage(file=»Paper_1.png»)
scissorHandPhoto = PhotoImage(file=»Scissor_1.png»)
lizardHandPhoto = PhotoImage(file=»Lizard_1.png»)
spockHandPhoto = PhotoImage(file=»Spock_1.png»)
#Graphical images :
rockPhoto = PhotoImage(file=»Rock_P.png»)
paperPhoto = PhotoImage(file=»Paper_P.png»)
scissorPhoto = PhotoImage(file=»Scissor_P.png»)
lizardPhoto = PhotoImage(file=»Lizard_P.png»)
spockPhoto = PhotoImage(file=»Spock_P.png»)
#Decision image :
decisionPhoto = PhotoImage(file=»Decision_Final.png»)
#Result images :
winPhoto = PhotoImage(file=»G_WIN.png»)
losePhoto = PhotoImage(file=»G_LOST.png»)
tiePhoto = PhotoImage(file=»G_DRAW.png»)
#Initialize the button variables :
rockHandButton = » «
paperHandButton = » «
scissorHandButton = » «
lizardHandButton= » «
spockHandButton = » «
#Create the result button :
resultButton = Button(root,image=decisionPhoto)
#Set the variable to True
click = True
def play():
    global rockHandButton,paperHandButton,scissorHandButton,lizardHandButton,spockHandButton
    #Set images and commands for buttons :
    rockHandButton = Button(root,image = rockHandPhoto, command=lambda:youPick(«Rock»))
    paperHandButton = Button(root,image = paperHandPhoto, command=lambda:youPick(«Paper»))
    scissorHandButton = Button(root,image = scissorHandPhoto, command=lambda:youPick(«Scissor»))
    lizardHandButton = Button(root,image= lizardHandPhoto,command=lambda:youPick(«Lizard»))
    spockHandButton = Button(root,image= spockHandPhoto,command=lambda:youPick(«Spock»))
    #Place the buttons on window :
    rockHandButton.grid(row=0,column=0)
    paperHandButton.grid(row=0,column=1)
    scissorHandButton.grid(row=0,column=2)
    lizardHandButton.grid(row=0,column=3)
    spockHandButton.grid(row=0,column=4)
    #Add space :
    root.grid_rowconfigure(1, minsize=50)
    #Place result button on window :
    resultButton.grid(row=2,column=0,columnspan=5)
def computerPick():
    choice = random.choice([«Rock»,»Paper»,»Scissor»,»Lizard»,»Spock»])
    return choice
def youPick(yourChoice):
    global click
    compPick = computerPick()
    if click==True:
        if yourChoice == «Rock»:
            rockHandButton.configure(image=rockPhoto)
            if compPick == «Rock»:
                paperHandButton.configure(image=rockPhoto)
                resultButton.configure(image=tiePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Draw.play()
                click = False
            elif compPick == «Paper»:
                paperHandButton.configure(image=paperPhoto)
                scissorHandButton.grid_forget()
                resultButton.configure(image=losePhoto)
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            elif compPick == «Scissor»:
                paperHandButton.configure(image=scissorPhoto)
                scissorHandButton.grid_forget()
                resultButton.configure(image=winPhoto)
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False
            elif compPick ==»Lizard»:
                paperHandButton.configure(image=lizardPhoto)
                scissorHandButton.grid_forget()
                resultButton.configure(image=winPhoto)
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False
            else :
                paperHandButton.configure(image=spockPhoto)
                scissorHandButton.grid_forget()
                resultButton.configure(image=losePhoto)
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
        elif yourChoice == «Paper»:
            rockHandButton.configure(image=paperPhoto)
            if compPick == «Rock»:
                paperHandButton.configure(image=rockPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            elif compPick == «Paper»:
                paperHandButton.configure(image=paperPhoto)
                resultButton.configure(image=tiePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Draw.play()
                click = False
            elif compPick == «Scissor»:
                paperHandButton.configure(image=scissorPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            elif compPick ==»Lizard»:
                paperHandButton.configure(image=lizardPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            else :
                paperHandButton.configure(image=spockPhoto)
                resultButton.configure(image=winPhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False
        elif yourChoice==»Scissor»:
            rockHandButton.configure(image=scissorPhoto)
            if compPick == «Rock»:
                paperHandButton.configure(image=rockPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            elif compPick == «Paper»:
                paperHandButton.configure(image=paperPhoto)
                resultButton.configure(image=winPhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False
            elif compPick==»Scissor»:
                paperHandButton.configure(image=scissorPhoto)
                resultButton.configure(image=tiePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Draw.play()
                click = False
            elif compPick == «Lizard»:
                paperHandButton.configure(image=lizardPhoto)
                resultButton.configure(image=winPhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False
            else:
                paperHandButton.configure(image=spockPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
        elif yourChoice==»Lizard»:
            rockHandButton.configure(image=lizardPhoto)
            if compPick == «Rock»:
                paperHandButton.configure(image=rockPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            elif compPick == «Paper»:
                paperHandButton.configure(image=paperPhoto)
                resultButton.configure(image=winPhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False
            elif compPick==»Scissor»:
                paperHandButton.configure(image=scissorPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            elif compPick == «Lizard»:
                paperHandButton.configure(image=lizardPhoto)
                resultButton.configure(image=tiePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Draw.play()
                click = False
            else:
                paperHandButton.configure(image=spockPhoto)
                resultButton.configure(image=winPhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False
        elif yourChoice==»Spock»:
            rockHandButton.configure(image=spockPhoto)
            if compPick == «Rock»:
                paperHandButton.configure(image=rockPhoto)
                resultButton.configure(image=winPhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False
            elif compPick == «Paper»:
                paperHandButton.configure(image=paperPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            elif compPick==»Scissor»:
                paperHandButton.configure(image=scissorPhoto)
                resultButton.configure(image=winPhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Win.play()
                click = False
            elif compPick == «Lizard»:
                paperHandButton.configure(image=lizardPhoto)
                resultButton.configure(image=losePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Lose.play()
                click = False
            else:
                paperHandButton.configure(image=spockPhoto)
                resultButton.configure(image=tiePhoto)
                scissorHandButton.grid_forget()
                lizardHandButton.grid_forget()
                spockHandButton.grid_forget()
                Draw.play()
                click = False
    else:
        #To reset the game :
        if yourChoice==»Rock» or yourChoice==»Paper» or yourChoice==»Scissor» or yourChoice==»Lizard» or yourChoice==»Spock»:
            rockHandButton.configure(image=rockHandPhoto)
            paperHandButton.configure(image=paperHandPhoto)
            scissorHandButton.configure(image=scissorHandPhoto)
            lizardHandButton.configure(image=lizardHandPhoto)
            spockHandButton.configure(image=spockHandPhoto)
            resultButton.configure(image=decisionPhoto)
            #Get back the deleted buttons :
            scissorHandButton.grid(row=0,column=2)
            lizardHandButton.grid(row=0,column=3)
            spockHandButton.grid(row=0,column=4)
            #Set click = True :
            click=True
            #Play the sound file :
            start.play()
#Calling the play function :
play()
#Enter the main loop :
root.mainloop()

Заключение и ресурсы

Поздравляю! Вы достигли конца и создали успешную игру на Python Tkinter. Отличная работа с применением ваших знаний Python. Надеюсь, вам понравилась эта статья и вы узнали из нее что-то новое.

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

Оцените статью
bestprogrammer.ru
Добавить комментарий