Здравсвуйте! Можете пожалуйста исправить код так, чтобы рисовалось что-то больше похожее на виселицу и сделайте пожалуйста так, чтобы при нажатии на букву она становилась зелёной или красной зависимости от правильности ответа
Код(К сожалению не могу его вставить с большими пробелами (Tab)):
from random import randint
from tkinter import *
from tkinter import messagebox
logs = Tk()
logs.geometry("900x800")
kanva = Canvas(logs, width=300, height=300)
kanva.place(x=0, y=0)
vardi=["Gurķis", "Tomāts", "Burkāns", "Ķirbis", "Sīpols"]
nosaukums=Label(logs,text='Karatavas spēle', font="Arial 20 bold")
nosaukums.pack()
Uzdevums=Label(logs, text="", font="Arial 50 bold")
Uzdevums.place(x=120, y=400)
y=0
wordIndex=""
def Word():
global wordIndex
r=randint(0,9)
wordIndex=vardi[r]
global Uzdevums
Uzdevums.config(text="-"*len(wordIndex))
global numlncorrect
numlncorrect=0
kanva.delete("all")
Word()
def checkLetter(event):
burts=event.widget["text"]
z=wordIndex.find(burts)
if wordIndex[z]==burts:
newGuess = ""
global Uzdevums
oldGuess=Uzdevums["text"]
for i in range(len(wordIndex)):
if burts==wordIndex[i]:
newGuess+=burts
else:
newGuess+=oldGuess[i]
Uzdevums.config(text=newGuess)
if Uzdevums["text"]==wordIndex:
nebeigt1=messagebox.askyesno("uzvara","Vai spēlēsi vēl?")
if nebeigt1==True:
Word()
else:
logs.destroy()
else:
global numlncorrect
numlncorrect+=1
zimet()
if numlncorrect==10:
nebeigt2=messagebox.askyesno("zaudējums","Vai spēlēsi vēl?")
if nebeigt2==True:
Word()
else:
logs.destroy()
burti=[]
x="AĀBCČDEĒFGĢHIĪJKĶLĻMNŅOPRSŠTUŪVZŽ"
for i in range(33):
burti.append(Button(logs, text = x[i], fg = "white", bg="red", width=3, font="Arial 20 bold"))
burti[i].place(x=500+70*(i%5), y=60+70*(i//5))
burti[i].bind(' ', checkLetter)
def zimet():
global numlncorrect
if numlncorrect == 1:
kanva.create_oval(50, 50, 100, 100)
elif numlncorrect == 2:
kanva.create_line(75, 100, 75, 200)
elif numlncorrect == 3:
kanva.create_line(75, 125, 50, 150)
elif numlncorrect == 4:
kanva.create_line(75, 125, 100, 150)
elif numlncorrect == 5:
kanva.create_line(75, 200, 50, 225)
elif numlncorrect == 6:
kanva.create_line(75, 200, 100, 225)
elif numlncorrect == 7:
kanva.create_line(150, 225, 150, 20)
elif numlncorrect == 8:
kanva.create_line(150, 20, 100, 20)
elif numlncorrect == 9:
kanva.create_line(20,80,55,80,fill="black",width=3)
elif numlncorrect == 10:
kanva.create_line(55,80,55,70,fill="black",width=3)
Answers & Comments
Ответ:
Конечно, я могу помочь с изменением кода. Вот исправленный код, который рисует виселицу и меняет цвет кнопок в зависимости от правильности ответа:
from random import randint
from tkinter import *
from tkinter import messagebox
logs = Tk()
logs.geometry("900x800")
kanva = Canvas(logs, width=300, height=300)
kanva.place(x=0, y=0)
vardi=["Gurķis", "Tomāts", "Burkāns", "Ķirbis", "Sīpols"]
nosaukums=Label(logs,text='Karatavas spēle', font="Arial 20 bold")
nosaukums.pack()
Uzdevums=Label(logs, text="", font="Arial 50 bold")
Uzdevums.place(x=120, y=400)
y=0
wordIndex=""
def Word():
global wordIndex
r=randint(0,4)
wordIndex=vardi[r]
global Uzdevums
Uzdevums.config(text="-"*len(wordIndex))
global numlncorrect
numlncorrect=0
kanva.delete("all")
zimet()
Word()
def checkLetter(event):
global numlncorrect
burts=event.widget["text"]
z=wordIndex.find(burts)
if wordIndex[z]==burts:
newGuess = ""
oldGuess=Uzdevums["text"]
for i in range(len(wordIndex)):
if burts==wordIndex[i]:
newGuess+=burts
else:
newGuess+=oldGuess[i]
Uzdevums.config(text=newGuess)
if Uzdevums["text"]==wordIndex:
for i in range(33):
burti[i]["state"] = DISABLED
nebeigt1=messagebox.askyesno("uzvara","Vai spēlēsi vēl?")
if nebeigt1==True:
Word()
for i in range(33):
burti[i]["state"] = NORMAL
else:
logs.destroy()
else:
numlncorrect+=1
zimet()
if numlncorrect==10:
for i in range(33):
burti[i]["state"] = DISABLED
nebeigt2=messagebox.askyesno("zaudējums","Vai spēlēsi vēl?")
if nebeigt2==True:
Word()
for i in range(33):
burti[i]["state"] = NORMAL
else:
logs.destroy()
event.widget["bg"] = "red"
burti=[]
x="AĀBCČDEĒFGĢHIĪJKĶLĻMNŅOPRSŠTUŪVZŽ"
for i in range(33):
burti.append(Button(logs, text = x[i], fg = "white", bg="green", width=3, font="Arial 20 bold"))
burti[i].place(x=500+70*(i%5), y=60+70*(i//5))
burti[i].bind('<Button-1>', checkLetter)
def zimet():
global numlncorrect
if numlncorrect == 1:
kanva.create_line(10,290,140,290,width=4)