Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 23, 2017 15:13:54

Vilgelm
Зарегистрирован: 2017-10-04
Сообщения: 7
Репутация: +  -1  -
Профиль   Отправить e-mail  

СРОЧНО! ПОМОГИТЕ! НУЖНО ДОРАБОТАТЬ ИГРУ НА TKINTER PYTHON!

Я писал игру Камень, ножницы, бумага! Сначала я написал код игры без графического интерфейса, а потом решил на tkinter реализовать ту же программу только с графическим интерфейсом. Я успешно написал код игры, а с графическим интерфейсом у меня вышли проблемы!
ПОМОГИТЕ!

У меня есть код без графического интерфейса:

 import random
d = 0 # Счёт
l = 0
w = 0
l = ['k','n','b']
def inp():
    global n
    while True:
        try:
            n = int(input('Количество игр:'))
            return n
        except ValueError:
            print('ОШИБКА!')
def logic(x, y): 
        global d, w, l
        if x == y:
            print('Ничья')
            print("-------")
            d += 1
        elif (x == 'k' and y == 'n') or (x == 'n' and y == 'b') or (x == 'b' and y == 'k'):
            print('Выигрыш')
            print("-------")
            w += 1
        else:
            print('Проигрыш')
            print("-------")   
        return d, l, w
inp()
while n != 0:
    while True:
        x = input('Камень (k), Ножницы (n), Бумага (b)')
        if x not in l:
            print('Введите k, n, b')
        else: break
    y = random.choice(l)
    logic(x, y)
    n -= 1
else:
    print('Победы - {0}\n Проигрыши - {1}\n Ничьи- {2}'.format(w, l, d))

И есть недоработанный код той же программы с графическим интерфейсом (ЕГО НУЖНО ДОРАБОТАТЬ!):
 import random
d = 0 # Счёт
l = 0
w = 0
l = ['k','n','b']
#интерфейс
from tkinter import *
                
def getText():
        global get
        get = e.get()
        print(get)
        start()
                
def start():
        main = Tk()
        main.title("Камень ножницы бумага")
        main.geometry("500x500")
        btn1 = Button(main, text = 'Камень', background="#555",    foreground="#ccc", padx="10",pady="5",font="16")
        btn2 = Button(main, text = 'Ножницы', background="#555",    foreground="#ccc", padx="10",pady="5",font="16")
        btn3 = Button(main, text = 'Бумага', background="#555",    foreground="#ccc", padx="10",pady="5",font="16")
        btn1.pack()
        btn2.pack()
        btn3.pack()
        while get != 0:
                while True:
                        start()        
        
root = Tk()
root.title("Камень ножницы бумага")
root.geometry("100x100")
e = Entry()
btn = Button(root, text = 'Играть', background="#555",    
             foreground="#ccc",     
             padx="10",            
             pady="5",              
             font="16",
             command=getText
             )
e.pack()
btn.pack()
root.mainloop()

Офлайн

#2 Ноя. 23, 2017 15:52:18

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

СРОЧНО! ПОМОГИТЕ! НУЖНО ДОРАБОТАТЬ ИГРУ НА TKINTER PYTHON!

Vilgelm
И есть недоработанный код той же программы с графическим интерфейсом (ЕГО НУЖНО ДОРАБОТАТЬ!)
что значит “ДОРАБОТАТЬ”? сделать из нее варкрафт3 или фаллаут4?
если чтото не получаеться так и напишите, хочу сделать тото и тото но не знаю как или знаю но чтото не выходит.

вот эта конструкция просто феерична
 while get != 0:
                while True:
                        start()
Видите ли tkinter событийно-ориентированная библиотека и написание приложения на ней несколько отличается от написания консольной программы. Тут не нужно зацикливать вайлом для того чтобы программа не завершилась. В приложениях такого типа имеется главный цикл обработки событий. В Tkinter такой цикл запускается методом mainloop(). Для явного выхода из интерпретатора и завершения цикла обработки событий используется метод quit().



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#3 Ноя. 25, 2017 12:32:23

Vladimirv
Зарегистрирован: 2013-03-22
Сообщения: 108
Репутация: +  7  -
Профиль   Отправить e-mail  

СРОЧНО! ПОМОГИТЕ! НУЖНО ДОРАБОТАТЬ ИГРУ НА TKINTER PYTHON!

Vilgelm имена переменным надо давать осмысленные, чуть больше букв. Тогда не будет ошибки в первых строках с определением переменных, где переменная l=0 заменяется списком

 l = ['k','n','b']
Потом нет приращения l и вместо l выводится список, когда должно быть число. Думаю тут все ясно? )

И еще, информирование ‘выигрыш’ это здорово, но думаю интересно было бы узнать подробности, что выпало компьютеру. Например:
Вы выбрали: ножницы
Компьютер выбрал: камень
Вы проиграли.

А число игр должно быть неопределенным, может кто захочет сыграть 10 игр, а возможно и 1 хватит.

Отредактировано Vladimirv (Ноя. 25, 2017 12:33:57)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version