Създайте тази забавна нумерологична игра в Python, за да практикувате манипулиране на низове и да научите за Tkinter.
FLAMES е забавна игра за деца, които се противопоставят на приятели, любовници, любовници, брак и врагове. Играта взема имената на двама души и с поредица от стъпки определя тяхната връзка. За да играете FLAMES, запишете имената на двамата души, елиминирайте съвпадащите букви и пребройте оставащите знаци.
Превъртете буквите на думата, ПЛАМЪК, използвайки броя и премахнете тази буква. Например, ако броят е четири, премахнете буквата М. Броенето започва отново от Е. Повторете този процес, докато остане само една буква, която обозначава състоянието на връзката.
Модулът Tkinter
За да създадете играта FLAMES, ще използвате модула Tkinter. Tkinter е междуплатформен, прост и лесен за използване модул, който можете да използвате за бързо създаване на графични потребителски интерфейси. Някои от приложенията, които можете да създавате като начинаещи с помощта на Tkinter, включват a Музикален плеър, Календар, Инструмент за преобразуване на теглои а Игра за смесване на думи.
За да инсталирате tkinter във вашата система, изпълнете следната команда в терминала:
pip инсталирайте tkinter
Как да създадете игра FLAMES с помощта на Python
Тук можете да намерите изходния код на играта FLAMES, използвайки Python GitHub хранилище.
Импортирайте модула Tkinter. Дефинирайте функция, remove_match_char() който приема два списъка като вход. Използвайте вложен for цикъл, за да преминете през двата списъка. Проверете дали има съответстващ знак; ако има, премахнете го от двата списъка и създайте трети списък, който обединява двата списъка със звездичка между тях. Звездицата действа като разделител.
Връща третия списък заедно с намереното съвпадение като True. В случай че няма съответстващи букви, върнете списъка, както е създаден по-горе.
от tkinter импортиране *
дефremove_match_char(списък1, списък2):
за аз в диапазон (len (списък1)):
за й в диапазон (len (списък2)):
ако списък1[i] == списък2[j]:
c = списък1[i]
list1.remove (c)
list2.remove (c)
списък3 = списък1 + ["*"] + списък2
връщане [списък3, Вярно]
списък3 = списък1 + ["*"] + списък2
връщане [списък3, Невярно]
Дефинирайте функция, кажи_статус(). Извлечете името на лицето, което потребителят е въвел с помощта на получи() метод на графичния модул Entry. Преобразувайте всички букви в малки и премахнете всички интервали между тях. Преобразувайте името в списък със знаци. Повторете това с името на втория човек и задайте продължете променлива към Вярно.
дефкажи_състояние():
p1 = Person1_field.get()
p1 = p1.lower()
p1.replace(" ", "")
p1_list = списък (p1)
p2 = Person2_field.get()
p2 = p2.lower()
p2.replace(" ", "")
p2_list = списък (p2)
продължете = Вярно
Докато стойността на continue стане истина, извикайте remove_match_char() и предайте двата списъка, които току-що създадохте. Съхранявайте свързания списък и състоянието на флага, получени от функцията. Намерете индекса на звездичката, която сте вмъкнали, и разделете низовете на два списъка преди и след нея.
Пребройте броя на символите в двата списъка и дефинирайте списък, който съхранява различните статуси, които една връзка може да има според играта FLAMES.
докато продължете:
ret_list = remove_match_char (p1_list, p2_list)
con_list = ret_list [0]
продължи = ret_list[1]
star_index = con_list.index("*")
p1_list = con_list [: звезден_индекс]
p2_list = con_list[star_index + 1:]
брой = len (p1_list) + len (p2_list)
резултат = ["приятели", "любов", "привързаност", "Брак", "враг", "Братя и сестри"]
Докато буквите в списъка с резултати не са нула, запазете стойността на индекса, откъдето трябва да извършите нарязването. Ако индексът е по-голям или равен на нула, разделете списъците на две части и съхранете свързания низ с дясната част, добавена първа по ред. Това гарантира, че можете да броите в посока, обратна на часовниковата стрелка.
Вмъкнете резултата в полето за състояние на първата позиция на знака, за да покажете състоянието на връзката.
докато len (резултат) > 1:
split_index = (брой % len (резултат) - 1)ако split_index >= 0:
надясно = резултат [split_index + 1:]
ляво = резултат [: split_index]
резултат = дясно + ляво
друго:
резултат = резултат [: len (резултат) - 1]
Status_field.insert(0, резултат [0])
Дефинирайте функция, изчисти всичко(). Използвайте функцията delete() от първия индекс до последния в трите полета за въвеждане, за да изчистите съдържанието, показано на екрана. Използвайте метода focus_set() в първото поле за въвеждане, за да активирате и посочите потребителя да въвежда стойности в него.
дефизчисти всичко():
Лице1_поле.изтриване(0, КРАЙ)
Person2_field.delete(0, КРАЙ)
Status_field.delete(0, КРАЙ)
Person1_field.focus_set()
Инициализирайте екземпляра на Tkinter и покажете главния прозорец, като го предадете на класа. Задайте цвета на фона по ваш избор, размера и заглавието на вашето приложение.
корен = Tk()
root.configure (background=„#A020F0“)
root.geometry("700x200")
root.title("Игра FLAMES")
Определете три етикета, за да обозначите двамата лица и състоянието на връзката им. Задайте родителския прозорец, в който искате да ги поставите, текста, който трябва да показва, цвета на шрифта, цвета на фона и стиловете на шрифта. Добавете подложка в хоризонтална посока.
label1 = Етикет (корен, текст=„Име 1:“, fg='#ffffff',bg=„#A020F0“, шрифт=("ариал",20,"удебелен"), padx='20')
label2 = Етикет (корен, текст="Име 2:", fg='#ffffff',bg=„#A020F0“, шрифт=("ариал",20,"удебелен"), padx='20')
label3 = Етикет (корен, текст="Семейно положение: ", fg='#ffffff', bg=„#A020F0“,шрифт=("ариал",20,"удебелен"), padx='20')
Използвайте мениджъра на мрежата, за да подредите трите приспособления в първата колона. Поставете първия етикет във втория ред, втория етикет в третия ред и третия етикет в четвъртия ред.
label1.grid (ред=1, колона=0)
label2.grid (ред=2, колона=0)
label3.grid (ред=4, колона=0)
Дефинирайте три модула за въвеждане, за да получите стойностите на двете лица и да покажете техния статус. Задайте родителския прозорец, в който искате да поставите уиджетите, и стиловете на шрифта, които трябва да има.
Person1_field = Запис (корен, шрифт=("ариал", 15, "удебелен"))
Person2_field = Запис (корен, шрифт=("ариал", 15, "удебелен"))
Статус_поле = Запис (корен, шрифт=("ариал",15,"удебелен"))
По подобен начин използвайте мениджъра на мрежата, за да организирате приспособленията във втората колона. Използвай ipadx свойство, за да зададете броя на пикселите за подложка в границите на изпълнимия модул.
Person1_field.grid (ред=1, колона=1, ipadx="50")
Person2_field.grid (ред=2, колона=1, ipadx="50")
Status_field.grid (ред=4, колона=1, ipadx="50")
Определете два бутона, Изпращане и ясно. Задайте родителския прозорец, в който искате да ги поставите, текста, който трябва да показва, цвета на фона, цвета на шрифта, функциите, които трябва да изпълняват при щракване, и стиловете на шрифта.
Използвайте мениджъра на мрежата, за да поставите бутоните съответно в четвъртия и шестия ред на втората колона.
button1 = Бутон (корен, текст="Изпращане", bg="#00ff00", fg="черно", command=tell_status, шрифт=("ариал",13,"удебелен") )
button2 = Бутон (корен, текст="Ясно", bg="#00ff00", fg="черно", команда=изчисти_всичко, шрифт=("ариал",13,"удебелен"))
button1.grid (ред=3, колона=1)
button2.grid (ред=5, колона=1)
The mainloop() функцията казва на Python да стартира цикъла на събитията на Tkinter и да слуша за събития, докато затворите прозореца.
root.mainloop()
Съберете целия код заедно и се пригответе да играете играта FLAMES на една ръка разстояние.
Примерен резултат от играта FLAMES
При стартиране на програмата по-горе, програмата показва приложението за игра FLAMES с три етикета, три полета за въвеждане и два бутона, подредени в мрежа. При въвеждане на имената "Тони Старк" и "Пепър Потс", програмата показва състоянието на връзката им като "Любов".
Игри, които можете да създавате с Python
Pygame, Arcade, Panda3D, PyOpenGL и Pyglet са някои полезни модули, с които можете да създавате игри на Python. С помощта на Pygame можете да създавате 2D игри като Super Mario Bros, Flappy Bird и Snake. С помощта на Arcade можете да създадете клонинг на Pac-Man, Asteroids или Breakout.
Panda3D може да ви помогне да създадете 3D игри като Toontown Online, Pirates of the Caribbean Online и Disney's Virtual Magic Kingdom.