Есть игра, похожая на калькулятор, в которой собирается слово, это сделано, помогите реализовать "сложный режим", когда при активном чекбоксе буквы(кнопки) меняют свое местоположение и состав букв остается такой же, сейчас кнопки статичны.
Небольшое пояснение к коду: загаданное слово генерируется случайно, затем преобразуется в список, чтобы взять из списка символы для кнопок, для добавления "лишних кнопок" создается еще один случайный список. При каждом нажатии кнопки в результирующий список попадает символ, потом сравнение.
Небольшое пояснение к коду: загаданное слово генерируется случайно, затем преобразуется в список, чтобы взять из списка символы для кнопок, для добавления "лишних кнопок" создается еще один случайный список. При каждом нажатии кнопки в результирующий список попадает символ, потом сравнение.
Python:
from tkinter import *
from tkinter import messagebox
import random
import string
import sys
def calc(key):
answer_label.destroy()
hard_check.destroy()
# if window.hard.get() == 1:
# добавляем буквы в список из кнопок
for i in key:
if key == char_list[0]: #для символов из загаданного слова
rez_list.append(char_list[0])
elif key == char_list[1]:
rez_list.append(char_list[1])
elif key == char_list[2]:
rez_list.append(char_list[2])
elif key == char_list[3]:
rez_list.append(char_list[3])
elif key == char_list[4]:
rez_list.append(char_list[4])
elif key == rand_list[0]: #для символов из лишних кнопок
rez_list.append(rand_list[0])
elif key == rand_list[1]:
rez_list.append(rand_list[1])
elif key == rand_list[2]:
rez_list.append(rand_list[2])
elif key == rand_list[3]:
rez_list.append(rand_list[3])
elif key == "Exit":
sys.exit()
rez_string = ''.join(rez_list)
rez = Label(text=rez_string, bg="Yellow", fg="Black")
rez.place(relx=.5, rely=.6)
if len(rez_list)==len(char_list):
if rez_list==char_list:
messagebox.showinfo("Результат", "Вы выиграли!")
sys.exit()
else:
messagebox.showerror("Результат", "Вы проиграли!")
sys.exit()
def generate_random_string(length):
letters = string.ascii_lowercase
rand_string = ''.join(random.choice(letters) for i in range(length))
return rand_string
window = Tk()
window.title('Игра с клавиатурой')
window.geometry('400x200')
length = 5
window.hard = IntVar()
hard_check = Checkbutton(window, text="Сложный режим", variable=window.hard)
hard_check.place(relx=.3, rely=.4)
window.answer = generate_random_string(length)
# print("Random string is:", window.answer)
char_list = [] # пустой список для загаданного слова
rez_string=[]
for c in window.answer: #буквы в список
char_list.append(c)
# print(char_list)
rez_list = []
rand_list = []
# # buttons
rand_sym=generate_random_string(length)
for c in rand_sym: # добавляем буквы в список
rand_list.append(c)
answer_label = Label(text="Загаданное слово: " +window.answer, fg="#eee", bg="#333")
answer_label.place(relx=.3, rely=.3)
bttn_list = [
char_list[0], rand_list[0], rand_list[1],
char_list[1], rand_list[2], rand_list[3],
char_list[2], char_list[3], char_list[4],"Exit"
]
r = 1
c = 0
for i in bttn_list:
rel = ""
cmd = lambda x=i: calc(x)
Button(window, text=i, command=cmd, width=10).grid(row=r, column=c)
c += 1
if c > 4:
c = 0
r += 1
window.mainloop()
Последнее редактирование: