Zbuduj tę zabawną grę numerologiczną w Pythonie, aby poćwiczyć manipulowanie ciągami znaków i poznać Tkintera.

PŁOMIENIE to zabawna gra dla dzieci oznaczająca Przyjaciół, Kochanków, Czułych, Małżeństwa i Wrogów. Gra przyjmuje imiona dwóch osób i poprzez serię kroków określa ich związek. Aby zagrać w FLAMES, zanotuj imiona dwóch osób, wyeliminuj pasujące litery i policz pozostałe znaki.

Iteruj po literach słowa, PŁOMIENIE, używając liczby i usuń tę literę. Na przykład, jeśli liczba wynosi cztery, usuń literę M. Liczenie zaczyna się ponownie od E. Powtarzaj ten proces, aż pozostanie tylko jedna litera, która oznacza status związku.

Moduł Tkintera

Do zbudowania gry FLAMES użyjesz modułu Tkinter. Tkinter to wieloplatformowy, prosty i przyjazny dla użytkownika moduł, którego można używać do szybkiego tworzenia graficznych interfejsów użytkownika. Niektóre z aplikacji, które możesz zbudować jako początkujący przy użyciu Tkintera, to m.in Odtwarzacz muzyki, Kalendarz, Narzędzie do konwersji wagii a Gra polegająca na układaniu słów.

instagram viewer

Aby zainstalować tkinter w swoim systemie, uruchom następującą komendę w terminalu:

pip zainstaluj tkintera

Jak zbudować grę FLAMES przy użyciu Pythona

Możesz znaleźć kod źródłowy gry FLAMES przy użyciu Pythona w tym Repozytorium GitHub.

Zaimportuj moduł Tkinter. Zdefiniuj funkcję, usuń_dopasuj_znak() który akceptuje dwie listy jako dane wejściowe. Użyj zagnieżdżonej pętli for, aby iterować po obu listach. Sprawdź, czy istnieje pasujący znak; jeśli istnieje, usuń go z obu list i utwórz trzecią listę, która łączy obie listy z gwiazdką pomiędzy nimi. Gwiazdka pełni funkcję ogranicznika.

Zwróć trzecią listę wraz ze znalezionym dopasowaniem jako True. W przypadku braku pasujących liter, zwróć listę utworzoną powyżej.

z tkinter import *

pokusuń_dopasuj_znak(lista1, lista2):
Do I W zakres (dł. (lista1)):
Do J W zakres (dł. (lista2)):
Jeśli lista1[i] == lista2[j]:
c = lista1[i]
lista1.usuń (c)
lista2.usuń (c)
lista3 = lista1 + ["*"] + lista2
powrót [lista3, PRAWDA]
lista3 = lista1 + ["*"] + lista2
powrót [lista3, FAŁSZ]

Zdefiniuj funkcję, powiedz_status(). Pobierz nazwisko osoby wprowadzonej przez użytkownika za pomocą Dostawać() w widgecie Wpis. Zamień wszystkie litery na małe i wyeliminuj spacje pomiędzy nimi. Konwertuj nazwę na listę znaków. Powtórz to z imieniem drugiej osoby i ustaw przystępować zmienna do PRAWDA.

pokpowiedz_status():
p1 = Osoba1_pole.get()
p1 = p1.niższa()
p1.zastąp(" ", "")
lista_p1 = lista (p1)
p2 = Osoba2_pole.get()
p2 = p2.niższa()
p2.zastąp(" ", "")
lista_p2 = lista (p2)
kontynuować = PRAWDA

Dopóki wartość proce jest prawdziwa, wywołaj metodę usuń_dopasuj_znak() funkcji i przekazać dwie listy, które właśnie utworzyłeś. Przechowuj połączoną listę i stan flagi otrzymany z funkcji. Znajdź indeks wstawionej gwiazdki i podziel ciągi na dwie listy przed i po nim.

Policz liczbę znaków na dwóch listach i zdefiniuj listę, która przechowuje różne statusy, jakie może mieć związek, zgodnie z grą FLAMES.

chwila przystępować:
ret_list = usuń_dopasowany_znak (lista_p1, lista_p2)
lista_kont = lista_ret[0]
kontynuuj = ret_list[1]
indeks_gwiazdy = lista_kont.indeks("*")
p1_list = con_list[: star_index]
p2_list = con_list[star_index + 1:]

liczba = dł. (lista_p1) + dł. (lista_p2)
wynik = ["Przyjaciele", "Miłość", "Sympatia", "Małżeństwo", "Wróg", "Rodzeństwo"]

Dopóki litery na liście wyników nie będą równe zeru, przechowuj wartość indeksu, z którego musisz wykonać cięcie. Jeśli indeks jest większy lub równy zeru, podziel listy na dwie części i zapisz połączony ciąg z prawą częścią dodaną jako pierwszą w kolejności. Dzięki temu możesz liczyć w kierunku przeciwnym do ruchu wskazówek zegara.

Wstaw wynik do pola stanu na pierwszej pozycji znaku, aby wyświetlić stan relacji.

chwila len (wynik) > 1:
split_index = (liczba % len (wynik) - 1)

Jeśli indeks_rozdzielenia >= 0:
prawo = wynik[indeks_podziału + 1:]
lewo = wynik[: split_index]
wynik = prawa + lewa
w przeciwnym razie:
wynik = wynik[: len (wynik) - 1]

pole_stanu.wstaw(0, wynik[0])

Zdefiniuj funkcję, Wyczyść wszystko(). Użyj funkcji delete() od pierwszego indeksu do ostatniego w trzech polach wprowadzania, aby wyczyścić zawartość wyświetlaną na ekranie. Użyj metody focus_set() na pierwszym polu wprowadzania, aby aktywować i wskazać użytkownikowi, aby wprowadził w nim wartości.

pokWyczyść wszystko():
Person1_field.delete(0, KONIEC)
Person2_field.delete(0, KONIEC)
Status_field.delete(0, KONIEC)
Person1_field.focus_set()

Zainicjuj instancję Tkinter i wyświetl okno główne, przekazując je do klasy. Ustaw wybrany kolor tła, rozmiar i tytuł swojej aplikacji.

pierwiastek = Tk()
root.configure (tło='#A020F0')
korzeń.geometry("700x200")
root.tytuł(Gra „PŁOMIENIE”)

Zdefiniuj trzy etykiety, aby oznaczyć dwie osoby i ich status związku. Ustaw okno nadrzędne, w którym chcesz je umieścić, tekst, który ma wyświetlać, kolor czcionki, kolor tła i style czcionek. Dodaj trochę wypełnienia w kierunku poziomym.

etykieta1 = Etykieta (główny, tekst ="Imię 1: ",fg='#ffffff',bg='#A020F0', czcionka=(„arialny”,20,"pogrubiony"), padx='20')
etykieta2 = Etykieta (główny, tekst ="Imię 2: ",fg='#ffffff',bg='#A020F0', czcionka=(„arialny”,20,"pogrubiony"), padx='20')
etykieta3 = Etykieta (główny, tekst ="Status związku: ",fg='#ffffff', bg='#A020F0',czcionka=(„arialny”,20,"pogrubiony"), padx='20')

Użyj menedżera siatki, aby rozmieścić trzy widżety w pierwszej kolumnie. Umieść pierwszą etykietę w drugim rzędzie, drugą etykietę w trzecim rzędzie, a trzecią etykietę w czwartym rzędzie.

etykieta1.siatka (wiersz=1, kolumna=0)
etykieta2.grid (wiersz=2, kolumna=0)
etykieta3.grid (wiersz=4, kolumna=0)

Zdefiniuj trzy widżety wpisów, aby uzyskać wartości dwóch osób i wyświetlić ich status. Ustaw okno nadrzędne, w którym chcesz umieścić widżety, oraz style czcionek, które powinno mieć.

Person1_field = Wpis (główny, czcionka = („arialny”, 15, "pogrubiony"))
Person2_field = Wpis (główny, czcionka = („arialny”, 15, "pogrubiony"))
Status_field = Wpis (główny, czcionka = („arialny”,15,"pogrubiony"))

Podobnie użyj menedżera siatki, aby uporządkować widżety w drugiej kolumnie. Użyj ipadx właściwość, aby ustawić liczbę pikseli do wypełnienia wewnątrz granic widżetu.

Person1_field.grid (wiersz=1, kolumna=1, ipadx="50")
Person2_field.grid (wiersz=2, kolumna=1, ipadx="50")
Status_field.grid (wiersz=4, kolumna=1, ipadx="50")

Zdefiniuj dwa przyciski, Składać I Jasne. Ustaw okno nadrzędne, w którym chcesz je umieścić, tekst, który ma wyświetlać, kolor tła, kolor czcionki, funkcje, które mają wykonywać po kliknięciu, oraz style czcionek.

Użyj menedżera siatki, aby umieścić przyciski odpowiednio w czwartym i szóstym rzędzie drugiej kolumny.

button1 = Przycisk (główny, tekst="Składać", bg=„#00ff00”,fg="czarny", polecenie=stan_powiedzenia, czcionka=(„arialny”,13,"pogrubiony") )
przycisk2 = Przycisk (główny, tekst="Jasne", bg=„#00ff00”,fg="czarny", polecenie=wyczyść_wszystko, czcionka=(„arialny”,13,"pogrubiony"))
button1.grid (wiersz=3, kolumna=1)
button2.grid (wiersz=5, kolumna=1)

The główna pętla() mówi Pythonowi, aby uruchomił pętlę zdarzeń Tkinter i nasłuchiwał zdarzeń, dopóki nie zamkniesz okna.

root.mainloop()

Złóż cały kod i przygotuj się do gry FLAMES na wyciągnięcie ręki.

Przykładowy wynik gry FLAMES

Po uruchomieniu powyższego programu program wyświetla aplikację gry FLAMES z trzema etykietami, trzema polami wprowadzania i dwoma przyciskami ułożonymi w siatkę. Po wprowadzeniu imion „Tony Stark” i „Pepper Potts” program wyświetla status ich związku jako „Miłość”.

Gry, które możesz zbudować za pomocą Pythona

Pygame, Arcade, Panda3D, PyOpenGL i Pyglet to kilka przydatnych modułów, za pomocą których można tworzyć gry w języku Python. Za pomocą Pygame możesz tworzyć gry 2D, takie jak Super Mario Bros, Flappy Bird i Snake. Za pomocą Arcade możesz zbudować klona Pac-Mana, Asteroids lub Breakout.

Panda3D może pomóc w tworzeniu gier 3D, takich jak Toontown Online, Pirates of the Caribbean Online i Disney's Virtual Magic Kingdom.