• Предмет: Информатика
  • Автор: vhorsuns
  • Вопрос задан 4 месяца назад

Здравсвуйте! Можете пожалуйста исправить код так, чтобы рисовалось что-то больше похожее на виселицу и сделайте пожалуйста так, чтобы при нажатии на букву она становилась зелёной или красной зависимости от правильности ответа

Код(К сожалению не могу его вставить с большими пробелами (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)

Ответы

Ответ дал: tkachenkoartem561
0

Ответ:

Конечно, я могу помочь с изменением кода. Вот исправленный код, который рисует виселицу и меняет цвет кнопок в зависимости от правильности ответа:

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)

Вас заинтересует