Создайте эту забавную нумерологическую игру на Python, чтобы попрактиковаться в работе со строками и узнать о Tkinter.
FLAMES — это забавная игра для детей, обозначающая друзей, любовников, ласковых, брак и врагов. Игра берет имена двух человек и с помощью ряда шагов определяет их отношения. Чтобы сыграть в FLAMES, запишите имена двух человек, удалите совпадающие буквы и подсчитайте количество оставшихся символов.
Переберите буквы слова FLAMES, используя счет, и удалите эту букву. Например, если счет равен четырем, удалите букву М. Счет снова начинается с Е. Повторяйте этот процесс, пока не останется только одна буква, обозначающая статус отношений.
Модуль Ткинтера
Для создания игры FLAMES вы будете использовать модуль Tkinter. Tkinter — это кроссплатформенный, простой и удобный модуль, который можно использовать для быстрого создания графических пользовательских интерфейсов. Некоторые из приложений, которые вы можете создать как новичок с помощью Tkinter, включают в себя Музыкальный проигрыватель, Календарь, Инструмент преобразования веса, и Игра в слова.
Чтобы установить tkinter в вашей системе, выполните в терминале следующую команду:
пип установить ткинтер
Как создать игру FLAMES с помощью Python
Вы можете найти исходный код игры FLAMES с использованием Python в этом Репозиторий GitHub.
Импортируйте модуль Tkinter. Определите функцию, remove_match_char() который принимает два списка в качестве входных данных. Используйте вложенный цикл for для перебора обоих списков. Проверьте, есть ли соответствующий символ; если есть, удалите его из обоих списков и создайте третий список, который объединяет оба списка со звездочкой между ними. Звездочка действует как разделитель.
Верните третий список вместе с найденным совпадением как True. Если буквы не совпадают, верните список, созданный выше.
от ткинтер Импортировать *
дефremove_match_char(список1, список2):
для я в диапазон (длина (список1)):
для Дж в диапазон (длина (список2)):
если список1[i] == список2[j]:
с = список1[я]
список1.удалить (с)
list2.удалить (с)
список3 = список1 + ["*"] + список2
возвращаться [список3, Истинный]
список3 = список1 + ["*"] + список2
возвращаться [список3, ЛОЖЬ]
Определите функцию, сказать_статус (). Получить имя человека, введенное пользователем с помощью получать() в виджете Entry. Преобразуйте все буквы в нижний регистр и удалите все пробелы между ними. Преобразуйте имя в список символов. Повторите это с именем второго человека и установите продолжить переменная к Истинный.
дефTell_status():
p1 = Person1_field.get()
p1 = p1.нижний()
p1.заменить(" ", "")
p1_list = список (p1)
p2 = Person2_field.get()
p2 = p2.нижний()
p2.заменить(" ", "")
p2_list = список (p2)
продолжить = Истинный
До тех пор, пока значение continue не станет истинным, вызовите метод remove_match_char() функцию и передать два списка, которые вы только что создали. Сохраните составной список и состояние флага, полученное от функции. Найдите индекс звездочки, которую вы вставили, и разделите строки на два списка до и после него.
Подсчитайте количество персонажей в двух списках и определите список, в котором хранятся различные статусы, которые могут быть у отношений в соответствии с игрой FLAMES.
пока продолжить:
ret_list = remove_match_char (p1_list, p2_list)
con_list = рет_список[0]
продолжить = ret_list[1]
star_index = con_list.index("*")
p1_list = con_list[: star_index]
p2_list = con_list[star_index + 1:]
количество = длина (p1_list) + длина (p2_list)
результат = ["Друзья", "Любовь", "Привязанность", "Свадьба", "Враг", "Братья и сестры"]
Пока буквы в списке результатов не равны нулю, сохраняйте значение индекса, откуда вы должны выполнить нарезку. Если индекс больше или равен нулю, разделите списки на две части и сохраните объединенную строку с добавлением правой части первой по порядку. Это гарантирует, что вы можете считать в направлении против часовой стрелки.
Вставьте результат в поле статуса в позиции первого символа, чтобы отобразить статус отношений.
пока лен (результат) > 1:
split_index = (количество % len (результат) - 1)если разделенный_индекс >= 0:
справа = результат[split_index + 1:]
слева = результат[: split_index]
результат = право + лево
еще:
результат = результат[: len (результат) - 1]
Status_field.insert(0, результат[0])
Определите функцию, очистить все(). Используйте функцию удаления () от первого индекса до последнего в трех полях ввода, чтобы очистить содержимое, отображаемое на экране. Используйте метод focus_set() в первом поле ввода, чтобы активировать и указать пользователю ввести в него значения.
дефочистить все():
Person1_field.delete(0, КОНЕЦ)
Person2_field.delete(0, КОНЕЦ)
Статус_поле.удалить(0, КОНЕЦ)
Person1_field.focus_set()
Инициализируйте экземпляр Tkinter и отобразите корневое окно, передав его классу. Установите цвет фона по вашему выбору, размер и заголовок вашего приложения.
корень = Тк()
root.configure (фон ='# A020F0')
корень.геометрия("700x200")
корень.заголовок(Игра "ПЛАМЕНИ")
Определите три метки для обозначения двух человек и их статуса отношений. Установите родительское окно, в которое вы хотите их поместить, текст, который он должен отображать, цвет шрифта, цвет фона и стили шрифта. Добавьте немного отступов в горизонтальном направлении.
label1 = Метка (корень, текст ="Имя 1:", фг='#фффффф',бг='# A020F0', шрифт=("ариал",20,"смелый"), padx='20')
label2 = Метка (корень, текст ="Имя 2:", фг='#фффффф',бг='# A020F0', шрифт=("ариал",20,"смелый"), padx='20')
label3 = Метка (корень, текст ="Семейное положение: ", фг='#фффффф', бг='# A020F0', шрифт = ("ариал",20,"смелый"), padx='20')
Используйте диспетчер сетки, чтобы расположить три виджета в первом столбце. Поместите первую метку во второй ряд, вторую метку в третий ряд и третью метку в четвертый ряд.
label1.grid (строка =1, столбец =0)
label2.grid (строка =2, столбец =0)
label3.grid (строка =4, столбец =0)
Определите три виджета ввода, чтобы получить значения двух лиц и отобразить их статус. Установите родительское окно, в которое вы хотите поместить виджеты, и стили шрифта, которые должны быть у него.
Person1_field = Запись (корень, шрифт=("ариал", 15, "смелый"))
Person2_field = Запись (корень, шрифт=("ариал", 15, "смелый"))
Status_field = Запись (корень, шрифт=("ариал",15,"смелый"))
Точно так же используйте диспетчер сетки, чтобы упорядочить виджеты во втором столбце. Использовать айпадкс Свойство, чтобы установить количество пикселей для заполнения границ виджета.
Person1_field.grid (строка =1, столбец =1, айпад ="50")
Person2_field.grid (строка =2, столбец =1, айпад ="50")
Status_field.grid (строка =4, столбец =1, айпад ="50")
Определите две кнопки, Представлять на рассмотрение и Прозрачный. Установите родительское окно, в которое вы хотите их поместить, текст, который он должен отображать, цвет фона, цвет шрифта, функции, которые они должны выполнять при нажатии, и стили шрифта.
Используйте диспетчер сетки, чтобы разместить кнопки в четвертой и шестой строке второго столбца соответственно.
button1 = Кнопка (корень, текст ="Представлять на рассмотрение", бг="#00ff00", фг="черный", command=tell_status, шрифт=("ариал",13,"смелый") )
button2 = Кнопка (корень, текст ="Прозрачный", бг="#00ff00", фг="черный", команда=clear_all, шрифт=("ариал",13,"смелый"))
button1.grid (строка =3, столбец =1)
button2.grid (строка =5, столбец =1)
основной цикл () Функция сообщает Python запустить цикл событий Tkinter и прослушивать события, пока вы не закроете окно.
корень.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.