Проверявайте когнитивните си способности, като изградите тази игра с плочки с памет.

Плочките с памет или играта за съвпадение са отличен и забавен начин за повишаване на когнитивните способности, подобряване на паметта и подобряване на фокуса. Играта има набор от плочки, които трябва да обърнете една по една, да запомните и да изберете тези, които съвпадат. При правилно съпоставяне на всички плочки печелите играта.

И така, как можете да разработите тази невероятна игра с помощта на Python?

Модулите Tkinter и Random

Можете да изградите играта с плочки с памет, като използвате модулите Tkinter и Random. Tkinter ви позволява да създавате настолни приложения. Той предлага разнообразие от приспособления като бутони, етикети и текстови полета, които улесняват разработване на приложения като календари, калкулатори и списъци със задачи. За да инсталирате Tkinter, отворете терминала и стартирайте:

pip инсталирайте tkinter

Модулът Random е вграден модул на Python, използван за генериране на псевдослучайни числа. Използвайки това,

instagram viewer
можете да създадете генератор на произволни пароли, приложение за симулация на хвърляне на зарове или разбъркване на списъци. Освен това можете също разработете интересни игри като ръчен крикет и игри за отгатване на числа.

Как да създадете играта Memory Tile с помощта на Python

Тук можете да намерите изходния код за изграждане на играта с плочки с памет с помощта на Python GitHub хранилище.

Започнете с импортиране на модула Tkinter и Random. Инициализирайте основния прозорец и задайте заглавие и размери в пиксели.

от tkinter импортиране *
импортиране случаен
от tkinter импортиране кутия за съобщения

корен = Tk()
root.title(„Игра с плочки с памет“)
root.geometry("760x550")

Дефинирайте две глобални променливи и инициализирайте променливата победител на нула. Декларирайте списък с елементи, които ще се появят на плочките. Пренаредете списъка с помощта на произволните модули разбъркване () метод. Дефинирайте рамка в основния прозорец и добавете подложка от 10 във вертикална посока.

Инициализирайте променлива за броене на 0 и декларирайте съответно списък с отговори и речник.

глобален победител, мачове
победител = 0
съвпадения = ["ябълка","ябълка","банан","банан", "портокал","портокал", "боровинка","боровинка","черница","черница", "грозде","грозде"]
random.shuffle (съвпадения)
my_frame = Рамка (корен)
my_frame.pack (pady=10)
брои = 0
списък_с_отговори = []
answer_dict = {}

Дефинирайте функция, нулиране(). Задайте текста на етикета на празен низ, като използвате config() функция. Дефинирайте списък с бутони, по един за всяка от плочките. Преминете през списъка и задайте текста на плочката на бутона на празен низ, цвета на фона по подразбиране (SystemButtonFace), и състоянието до нормално.

дефнулиране():
my_label.config (текст="")
списък_бутони = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
за бутон в списък_бутони:
button.config (текст=" ", bg="SystemButtonFace", състояние="нормален")

Дефинирайте функция, печеля(). Задайте печелившо съобщение в текстовия параметър на етикета, като използвате config() функция. Дефинирайте списъка с бутони както по-рано и преминете през него, за да зададете цвета на фона на плочката на светло зелено.

дефпечеля():
my_label.config (текст="Честито! Ти печелиш!")
списък_бутони = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
за бутон в списък_бутони:
button.config (bg="#90EE90")

Дефинирайте функция, button_click() който приема бутона и неговия номер като входни параметри. Препратка към глобалните променливи, списък и речник. Ако текстът на бутона е равен на интервал и броят е по-малък от две, тогава вмъкнете и покажете текста на бутона. Добавете номера на бутона към списъка с отговори и името към речника с отговори. Увеличете променливата за броене с едно.

дефbutton_click(b, число):
глобален count, answer_list, answer_dict, победител
ако b["текст"] == ' 'и брои < 2:
b["текст"] = съвпадения [номер]
answer_list.append (номер)
answer_dict[b] = съвпадения [номер]
брои += 1

Ако дължината на списъка с отговори е две, това означава, че потребителят е избрал две плочки. Ако текстът на първата плочка съвпада с другата, конфигурирайте етикета да показва, че и двете съвпадат правилно. Завъртете състоянието на бутона на забранено. Задайте броя на нула и изпразнете списъка и речника. Увеличете променливата победител с едно и ако стане шест, извикайте декларираната по-рано функция за победа.

ако len (списък_с_отговори) == 2:
ако съвпадения [списък_с_отговори[0]] == съответства на [списък с отговори[1]]:
my_label.config (текст=„Съвпадение е!“)
за ключ в answer_dict:
ключ ["държава"] = "хора с увреждания"
брои = 0
списък_с_отговори = []
answer_dict = {}
победител += 1
ако победител == 6:
печеля()

В противен случай нулирайте променливата за броя и списъка. Покажете поле за съобщение със заглавие и съдържание, което го изобразява като неправилно съвпадение. Прегледайте списъка с отговори и задайте интервал за текста на плочката. Нулирайте етикета и изпразнете речника. Това гарантира, че няма видим текст върху бутона и етикета, след като потребителят е избрал неправилни плочки.

друго:
брои = 0
списък_с_отговори = []
messagebox.showinfo("Неправилно!", "Неправилно")
за ключ в answer_dict:
ключ ["текст"] = " "
my_label.config (текст=" ")
answer_dict = {}

Определете 12 бутона. Задайте родителския прозорец, в който искате да ги поставите, текста, който трябва да показват, стила на шрифта, който трябва да имат, тяхната височина и ширина и командата, която да се изпълни при щракване. Не забравяйте да използвате ламбда функцията, за да предадете данните на button_click() функция. Нагласи облекчение параметър към бразда за да създадете 3-D ефект на дълбочина около бутона.

b0 = Бутон (my_frame, text=' ', шрифт=("Хелветика", 20), височина=4, ширина=8, команда=ламбда: бутон_клик (b0, 0), релеф="бразда")
b1 = Бутон (my_frame, text=' ', шрифт=("Хелветика", 20), височина=4, ширина=8, команда=ламбда: button_click (b1, 1), релеф="бразда")
b2 = Бутон (my_frame, text=' ', шрифт=("Хелветика", 20), височина=4, ширина=8, команда=ламбда: button_click (b2, 2), релеф="бразда")
b3 = Бутон (my_frame, text=' ', шрифт=("Хелветика", 20), височина=4, ширина=8, команда=ламбда: button_click (b3, 3), релеф="бразда")
b4 = Бутон (my_frame, text=' ', шрифт=("Хелветика", 20), височина=4, ширина=8, команда=ламбда: button_click (b4, 4), релеф="бразда")
b5 = Бутон (my_frame, text=' ', шрифт=("Хелветика", 20), височина=4, ширина=8, команда=ламбда: button_click (b5, 5), релеф="бразда")
b6 = Бутон (my_frame, text=' ', шрифт=("Хелветика", 20), височина=4, ширина=8, команда=ламбда: button_click (b6, 6), релеф="бразда")
b7 = Бутон (my_frame, text=' ', шрифт=("Хелветика", 20), височина=4, ширина=8, команда=ламбда: button_click (b7, 7), релеф="бразда")
b8 = Бутон (my_frame, text=' ', шрифт=("Хелветика", 20), височина=4, ширина=8, команда=ламбда: button_click (b8, 8), релеф="бразда")
b9 = Бутон (my_frame, text=' ', шрифт=("Хелветика", 20), височина=4, ширина=8, команда=ламбда: button_click (b9, 9), релеф="бразда")
b10 = Бутон (my_frame, text=' ', шрифт=("Хелветика", 20), височина=4, ширина=8, команда=ламбда: button_click (b10, 10), релеф="бразда")
b11 = Бутон (my_frame, text=' ', шрифт=("Хелветика", 20), височина=4, ширина=8, команда=ламбда: button_click (b11, 11), релеф="бразда")

Организирайте бутоните в табличен формат, състоящ се от три реда и четири колони, като използвате мрежовия мениджър на Tkinter. За да направите това, обадете се на мрежа () метод и предайте реда заедно с номера на колоната, в която искате да го поставите.

b0.grid (ред=0, колона=0)
b1.grid (ред=0, колона=1)
b2.grid (ред=0, колона=2)
b3.grid (ред=0, колона=3)
b4.grid (ред=1, колона=0)
b5.grid (ред=1, колона=1)
b6.grid (ред=1, колона=2)
b7.grid (ред=1, колона=3)
b8.grid (ред=2, колона=0)
b9.grid (ред=2, колона=1)
b10.grid (ред=2, колона=2)
b11.grid (ред=2, колона=3)

Дефинирайте етикет, който показва празен низ и добавете подложка от 20 във вертикална посока. Дефинирайте меню от най-високо ниво в главния прозорец и го прикрепете, като завъртите откъсвам параметър към Невярно. Добавяне на елемент от подменюто, Настроики използвайки add_cascade параметър.

Добавете два елемента от менюто заедно с командите, които те трябва да изпълнят, когато щракнете в подменюто с име Нулиране на играта и Изход от играта. Добавете разделител между тях за разграничаване.

my_label = Етикет (корен, текст="")
my_label.pack (pady=20)

my_menu = Меню (корен)
root.config (menu=my_menu)
option_menu = Меню (my_menu, tearoff=Невярно)
my_menu.add_cascade (етикет="Настроики", меню=опция_меню)
option_menu.add_command (етикет=„Нулиране на играта“, команда=нулиране)
option_menu.add_separator()
option_menu.add_command (етикет=„Изход от играта“, команда=root.quit)

The mainloop() функцията казва на Python да стартира цикъла на събитията на Tkinter и да слуша за събития, докато затворите прозореца.

root.mainloop()

Съберете целия код заедно. Сега играта с плочки с памет е готова за игра.

Резултат от играта Memory Tile

При стартиране на програмата се появяват 12 бутона с празен текст заедно с Настроики меню. При кликване Нулиране на играта, прозорецът се появява по същия начин.

При избиране на две съвпадащи плочки бутоните изглеждат дезактивирани и етикетът показва, че изборът е правилен.

При избиране на две плочки, които не съвпадат, се появява поле със съобщение, което показва, че изборът е неправилен. Бутоните и етикетът се връщат в първоначалното си празно състояние.

При успешно съпоставяне на всички избори, програмата оцветява всички плочки в зелено и показва печелившото съобщение.

Игри, които можете да създавате с Python

Python предлага разнообразие от модули за създаване на игри. За да създадете прости игри, базирани на думи или избор, като Hangman, Tic-Tac-Toe или Rock Paper Scissors, можете да използвате модулите Tkinter и Random. За да разработите игри, които се нуждаят от повече графики, можете да използвате Pygame.

Pygame е набор от модули на Python, който работи на всички платформи. Той включва компютърна графика и звукови библиотеки, които правят игрите по-интерактивни. Някои от игрите, които можете да създадете с помощта на Pygame, включват играта Snake, пъзел с памет и судоку.