Dize manipülasyonu yapmak ve Tkinter hakkında bilgi edinmek için Python'da bu eğlenceli numeroloji oyununu oluşturun.
FLAMES, Arkadaşlar, Aşıklar, Sevgi, Evlilik ve Düşmanları temsil eden çocuklar için eğlenceli bir oyundur. Oyun iki kişinin adını alıyor ve bir dizi adımla aralarındaki ilişkiyi belirliyor. ALEVLER oynamak için iki kişinin adını not edin, eşleşen harfleri eleyin ve kalan karakterlerin sayısını alın.
Sayıyı kullanarak FLAMES kelimesinin harfleri üzerinde yineleyin ve o harfi çıkarın. Örneğin, sayı dört ise, M harfini kaldırın. Sayım yine E'den başlar. İlişki durumunu gösteren tek bir harf kalana kadar bu işlemi tekrarlayın.
Tkinter Modülü
FLAMES oyununu oluşturmak için Tkinter modülünü kullanacaksınız. Tkinter, hızlı bir şekilde grafik kullanıcı arayüzleri oluşturmak için kullanabileceğiniz, platformlar arası, basit ve kullanıcı dostu bir modüldür. Yeni başlayan biri olarak Tkinter kullanarak oluşturabileceğiniz uygulamalardan bazıları şunlardır: Müzik çalar, Takvim, Ağırlık Dönüştürme Aracıve bir Kelime Karmaca Oyunu.
tkinter'ı sisteminize kurmak için terminalde aşağıdaki komutu çalıştırın:
pip kurulumu tkinter
Python Kullanarak FLAMES Oyunu Nasıl Yapılır?
Python kullanan FLAMES oyununun kaynak kodunu bu linkte bulabilirsiniz. GitHub deposu.
Tkinter modülünü içe aktarın. Bir işlev tanımlayın, remove_match_char() girdi olarak iki liste kabul eder. Her iki listeyi de yinelemek için iç içe bir for döngüsü kullanın. Eşleşen bir karakter olup olmadığını kontrol edin; varsa, her iki listeden de kaldırın ve her iki listeyi de aralarında bir yıldızla birleştiren üçüncü bir liste oluşturun. Yıldız işareti sınırlayıcı görevi görür.
Bulunan eşleşmeyle birlikte üçüncü listeyi True olarak döndürün. Harflerin eşleşmemesi durumunda, listeyi yukarıda oluşturulan şekilde döndürün.
itibaren tkinter içe aktarmak *
kesinremove_match_char(liste1, liste2):
için Ben içinde aralık (uzunluk (liste1)):
için J içinde aralık (uzunluk (liste2)):
eğer liste1[i] == liste2[j]:
c = liste1[i]
liste1.kaldır (c)
liste2.kaldır (c)
liste3 = liste1 + ["*"] + liste2
geri dönmek [list3, Doğru]
liste3 = liste1 + ["*"] + liste2
geri dönmek [list3, YANLIŞ]
Bir işlev tanımlayın, tell_status(). Kullanıcının kullanarak girdiği kişinin adını alın elde etmek() Giriş parçacığındaki yöntem. Tüm harfleri küçük harfe çevirin ve aradaki boşlukları kaldırın. Adı bir karakter listesine dönüştürün. Bunu ikinci kişinin adıyla tekrarlayın ve ilerlemek değişken Doğru.
kesintell_status():
p1 = Kişi1_field.get()
p1 = p1.alt()
p1.değiştir(" ", "")
p1_list = liste (p1)
p2 = Kişi2_field.get()
p2 = p2.alt()
p2.değiştir(" ", "")
p2_list = liste (p2)
devam et = Doğru
ilerlemenin değeri doğru olana kadar, remove_match_char() işlev ve az önce oluşturduğunuz iki listeyi iletin. Birleştirilmiş listeyi ve işlevden alınan bayrak durumunu saklayın. Girdiğiniz yıldızın dizinini bulun ve dizileri ondan önce ve sonra olmak üzere iki liste halinde dilimleyin.
İki listedeki karakter sayısını sayın ve FLAMES oyununa göre bir ilişkinin sahip olabileceği çeşitli durumları saklayan bir liste tanımlayın.
sırasında ilerlemek:
ret_list = remove_match_char (p1_list, p2_list)
con_list = ret_list[0]
devam et = ret_list[1]
star_index = con_list.index("*")
p1_list = con_list[: yıldız_index]
p2_list = con_list[yıldız_dizin + 1:]
say = len (p1_list) + len (p2_list)
sonuç = ["Arkadaşlar", "Aşk", "Alaka", "Evlilik", "Düşman", "Kardeşler"]
Sonuç listesindeki harfler sıfır olmayana kadar, dilimlemeyi gerçekleştirmeniz gereken indeks değerini saklayın. İndeks sıfırdan büyük veya sıfıra eşitse, listeleri iki parçaya bölün ve birleştirilmiş dizeyi sırayla sağ kısım önce eklenecek şekilde saklayın. Bu, saat yönünün tersine sayabilmenizi sağlar.
İlişki durumunu görüntülemek için sonucu ilk karakter konumundaki durum alanına girin.
sırasında len (sonuç) > 1:
split_index = (sayım % len (sonuç) - 1)eğer bölünmüş_index >= 0:
sağ = sonuç[split_index + 1:]
sol = sonuç[: split_index]
sonuç = sağ + sol
başka:
sonuç = sonuç[: len (sonuç) - 1]
Status_field.insert(0, sonuç[0])
Bir işlev tanımlayın, hepsini temizle(). Ekranda görüntülenen içeriği silmek için üç giriş alanındaki ilk dizinden sonuncuya kadar delete() işlevini kullanın. Etkinleştirmek ve kullanıcının içine değer girmesini belirtmek için ilk giriş alanındaki focus_set() yöntemini kullanın.
kesinhepsini temizle():
Kişi1_alan.delete(0, SON)
Person2_field.delete(0, SON)
Status_field.delete(0, SON)
Kişi1_field.odak_set()
Tkinter örneğini başlatın ve kök pencereyi sınıfa geçirerek görüntüleyin. İstediğiniz arka plan rengini, boyutunu ve uygulamanızın başlığını ayarlayın.
kök = Tk()
root.config (arka plan="#A020F0")
kök.geometri("700x200")
root.title("ALEVLER Oyunu")
İki kişiyi ve ilişki durumlarını belirtmek için üç etiket tanımlayın. Bunları yerleştirmek istediğiniz ana pencereyi, göstermesi gereken metni, yazı tipi rengini, arka plan rengini ve yazı tipi stillerini ayarlayın. Yatay yönde biraz dolgu ekleyin.
label1 = Etiket (kök, metin="İsim 1:", fg="#ffffff",bg="#A020F0", yazı tipi=("arial",20,"gözü pek"), padx='20')
label2 = Etiket (kök, metin="Adı 2:", fg="#ffffff",bg="#A020F0", yazı tipi=("arial",20,"gözü pek"), padx='20')
label3 = Etiket (kök, metin="İlişki durumu: ", fg="#ffffff", bg="#A020F0",yazı tipi=("arial",20,"gözü pek"), padx='20')
İlk sütundaki üç parçacığı düzenlemek için ızgara yöneticisini kullanın. Birinci etiketi ikinci sıraya, ikinci etiketi üçüncü sıraya ve üçüncü etiketi dördüncü sıraya yerleştirin.
etiket1.grid (satır=1, sütun=0)
etiket2.grid (satır=2, sütun=0)
label3.grid (satır=4, sütun=0)
İki kişinin değerlerini almak ve durumlarını görüntülemek için üç giriş widget'ı tanımlayın. Widget'ları yerleştirmek istediğiniz ana pencereyi ve sahip olması gereken yazı tipi stillerini ayarlayın.
Kişi1_alanı = Giriş (kök, yazı tipi=("arial", 15, "gözü pek"))
Person2_field = Girdi (kök, font=("arial", 15, "gözü pek"))
Status_field = Giriş (kök, yazı tipi=("arial",15,"gözü pek"))
Benzer şekilde, pencere öğelerini ikinci sütunda düzenlemek için ızgara yöneticisini kullanın. Kullan ipadx Widget sınırları içinde doldurulacak piksel sayısını ayarlamak için özellik.
Person1_field.grid (satır=1, sütun=1, ipadx="50")
Person2_field.grid (satır=2, sütun=1, ipadx="50")
Status_field.grid (satır=4, sütun=1, ipadx="50")
İki düğme tanımlayın, Göndermek Ve Temizlemek. Bunları yerleştirmek istediğiniz ana pencereyi, görüntülemesi gereken metni, arka plan rengini, yazı tipi rengini, tıklandığında yürütmeleri gereken işlevleri ve yazı tipi stillerini ayarlayın.
Düğmeleri sırasıyla ikinci sütunun dördüncü ve altıncı satırına yerleştirmek için ızgara yöneticisini kullanın.
button1 = Düğme (kök, metin="Göndermek", bg="#00ff00", fg="siyah", komut=tell_status, yazı tipi=("arial",13,"gözü pek") )
button2 = Düğme (kök, metin="Temizlemek", bg="#00ff00", fg="siyah", komut=clear_all, font=("arial",13,"gözü pek"))
button1.grid (satır=3, sütun=1)
button2.grid (satır=5, sütun=1)
bu Ana döngü() işlevi, Python'a Tkinter olay döngüsünü çalıştırmasını ve siz pencereyi kapatana kadar olayları dinlemesini söyler.
root.mainloop()
Tüm kodu bir araya getirin ve FLAMES oyununu parmaklarınızın ucunda oynamaya hazır olun.
FLAMES Oyununun Örnek Çıktısı
Yukarıdaki programı çalıştırdığınızda, program bir ızgarada düzenlenmiş üç etiket, üç giriş alanı ve iki düğme ile FLAMES oyun uygulamasını görüntüler. "Tony Stark" ve "Pepper Potts" adlarını girdiğinizde, program ilişki durumlarını "Aşk" olarak görüntüler.
Python Kullanarak Yapabileceğiniz Oyunlar
Pygame, Arcade, Panda3D, PyOpenGL ve Pyglet, Python oyunları oluşturabileceğiniz bazı yararlı modüllerdir. Pygame'i kullanarak Super Mario Bros, Flappy Bird ve Snake gibi 2B oyunlar oluşturabilirsiniz. Arcade'i kullanarak bir Pac-Man, Asteroids veya Breakout klonu oluşturabilirsiniz.
Panda3D, Toontown Online, Pirates of the Caribbean Online ve Disney's Virtual Magic Kingdom gibi 3D oyunlar oluşturmanıza yardımcı olabilir.