2015-07-29 2 views
1

В настоящее время я работаю над графическим приложением Python [Tkinter] Rock Paper Scissors GUI. До сих пор мне удалось создать интерфейс и даже позволить пользователю делать свой выбор. Единственная проблема - я не могу понять, как распечатать решение компьютера. Я хочу иметь возможность обновлять ярлык или загружать изображение в зависимости от того, что выбрал компьютер. Например, пользователь нажимает на камень, и я хочу иметь возможность печатать в окне изображение скалы или слово rock и обновлять его в следующий раз, когда пользователь выбирает новый вариант, такой как ножницы или бумага и перезагрузите его. Поэтому в упрощенных словах я хочу, чтобы каждый раз, когда пользователь нажимает кнопку, я могу создавать обновляемое изображение или/текст (ярлык). P.S. Единственная причина, по которой я использую pygame, - разрешить моему приложению работать с музыкой. Также я предоставил скриншоты ниже приложения.Python [Tkinter] Rock Paper Scissors GUI

Код:

#Written by : Pamal Mangat. 
#Written on : Monday, July 27th, 2015. 
#Rock Paper Scissors : Version 1.2 (Tkinter [GUI] addition) 

from tkinter import * 
from sys import * 
from PIL import Image, ImageTk 
import pygame as py 
import os 
from random import randrange 

py.init() 

#Function runs the actual game. 
def runGame(startWindow): 

#Close [startWindow] before advancing: 
startWindow.destroy() 
startWindow.quit() 

master = Tk() 
master.title('Lets Play!') 

#Function carries on the remainder of the game. 
def carryGame(button_id): 

    result = StringVar() 
    printResult = Label(master, textvariable = result, font='Bizon 32 bold', bg='PeachPuff2') 
    printResult.place(x=150, y=300) 

    #Computer's move: 
    random_Num = randrange(1,4) 

    if random_Num == 1: 
     computer_Move = 'Rock' 

    elif random_Num == 2: 
     computer_Move = 'Paper' 

    else: 
     computer_Move = 'Scissors' 

    if button_id == 1: 
     player_Move = 'Rock' 

    elif button_id == 2: 
     player_Move = 'Paper' 

    else: 
     player_Move = 'Scissors' 

#Rock button 
rock_Button = Button(master, width=15, height=7, command=lambda:carryGame(1)) 
rock_photo=PhotoImage(file=r'C:\Users\Pamal\Desktop\Documents\Python Folder\Python Projects\Rock, Paper, Scissors\V 1.2\Images\rock.png') 
rock_Button.config(image=rock_photo,width="120",height="120") 
rock_Button.place(x=17, y=70) 

#Paper button 
paper_Button = Button(master, width=15, height=7, command=lambda:carryGame(2)) 
paper_photo=PhotoImage(file=r'C:\Users\Pamal\Desktop\Documents\Python Folder\Python Projects\Rock, Paper, Scissors\V 1.2\Images\paper.png') 
paper_Button.config(image=paper_photo,width="120",height="120") 
paper_Button.place(x=167, y=70) 

#Scissors button 
scissors_Button = Button(master, width=15, height=7, command=lambda:carryGame(3)) 
scissors_photo=PhotoImage(file=r'C:\Users\Pamal\Desktop\Documents\Python Folder\Python Projects\Rock, Paper, Scissors\V 1.2\Images\scissors.png') 
scissors_Button.config(image=scissors_photo,width="120",height="120") 
scissors_Button.place(x=317, y=70) 

label_1 = Label(master, text='Please make your selection-', font='Bizon 20 bold', bg='PeachPuff2') 
label_1.pack(side=TOP) 

label_2 = Label(master, text='The computer picked:', font='Helvetica 22 bold', bg='PeachPuff2') 
label_2.place(x=70, y=240) 

#Locks window size 
master.maxsize(450, 400) 
master.minsize(450, 400) 

#Sets window background to PeachPuff2 
master.config(background='PeachPuff2') 

master.mainloop() 

def startScreen(): 

    #Plays music for the application 
    def playMusic(fileName): 
     py.mixer.music.load(fileName) 
     py.mixer.music.play() 

    #Start Window 
    startWindow = Tk() 
    startWindow.title('[Rock] [Paper] [Scissors]') 

    #Imports image as title 
    load = Image.open(r'C:\Users\Pamal\Desktop\Documents\Python Folder\Python Projects\Rock, Paper, Scissors\V 1.2\Images\title.png') 
    render = ImageTk.PhotoImage(load) 
    img = Label(startWindow, image=render, bd=0) 
    img.image = render 
    img.place(x=-100, y=-65) 

    clickToPlay = Button(startWindow, text='Play!', width=8, font='Bizon 20 bold', bg='Black', fg='Yellow', relief=RIDGE, bd=0, command=lambda:runGame(startWindow)) 
    clickToPlay.place(x=75, y=125) 

    #Credit 
    authorName = Label(startWindow, text='Written by : Pamal Mangat', font='Times 6 bold', bg='Black', fg='Yellow') 
    authorName.place(x=2, y=230) 

    versionNum = Label(startWindow, text='[V 1.2]', font='Times 6 bold', bg='Black', fg='Red') 
    versionNum.place(x=268, y=230) 

    #Start Screen Music 
    playMusic(r'C:\Users\Pamal\Desktop\Documents\Python Folder\Python Projects\Rock, Paper, Scissors\V 1.2\Audio\title_Song.mp3') 

    #Locks window size 
    startWindow.maxsize(300, 250) 
    startWindow.minsize(300, 250) 

    #Sets window background to black 
    startWindow.config(background='Black') 

    startWindow.mainloop() 

startScreen() 

Скриншоты:

Изображение стартового экрана:

enter image description here

Изображение окна, которое открывается после нажатия играть на стартовом экране: enter image description here

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

+1

Для этого вам нужно создать какой-то виджетов или объектов (например, «Ярлык» или что-то еще), а затем просто перенастроить его образ с помощью 'config()'. – TigerhawkT3

+0

Есть ли какая-то функция, которая * гарантирована * для запуска непосредственно перед отображением ответа компьютера? (Подсказка: в carryGame() вы уже вычисляете перемещение компьютера, вы просто не показываете его.) – msw

+0

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

ответ

0

После того, как игрок выбрал, просто создайте метку, расположенную под меткой_2, и сделайте так, чтобы она произнесла переменную computer_move. Не забудьте использовать правильные капиталы для вашей переменной, я не сделал этого, но надеюсь, вы поняли.

+1

вы не хотите создавать ярлык каждый раз, когда игрок выбирает. Вы хотите создать ярлык один раз и затем обновить его. –