Python Hafıza Oyunu

hafiza_oyunu

import tkinter as tk
import threading
import time
import random

seviye = 4
can = 3
sekans = ""
dogru = 0

def kaybetme_kosullari():
    global can,canlbl
    canlbl["text"] = "Can:" +str(can)
    if can < 1:
        exit()

def yeni_sekans():
    global sayilbl,sekans,seviye,gonderbtn,cevap
    cevap["state"] = tk.DISABLED
    gonderbtn["state"] = tk.DISABLED
    sekans = str(random.randint(10**seviye,10**(seviye + 1) - 1))
    for i in sekans:
        sayilbl["text"] = i
        time.sleep(1)
        sayilbl["text"] = ""
        time.sleep(0.5)
    
    gonderbtn["state"] = tk.ACTIVE
    cevap["state"] = tk.NORMAL

def gonder():
    global sekans,cevap,dogru,dogrulbl,can,seviye
    thr2 = threading.Thread(target=yeni_sekans)
    if cevap.get() == sekans:
        dogru += 1
        dogrulbl["text"] = "Doğru: "+str(dogru)
        seviye += 1
        cevap.delete(0,len(cevap.get()))
        thr2.start()
    else:
        can -= 1
        seviye -= 1
        cevap.delete(0,len(cevap.get()))
        thr2.start()
    kaybetme_kosullari()

pencere = tk.Tk()
pencere.title("Hafıza Oyunu")
pencere.geometry(("400x300"))
pencere.resizable(False,False)
sayilbl = tk.Label(text="",font=("Ariel",70))
sayilbl.pack()
cevap = tk.Entry()
cevap.place(x=120,y=200)
gonderbtn = tk.Button(text="Gönder",command=gonder)
gonderbtn.place(x=165,y=230)
canlbl = tk.Label(text="Can: {}".format(can))
canlbl.place(x=20,y=280)
dogrulbl = tk.Label(text="Doğru: {}".format(dogru))
dogrulbl.place(x=320,y=280)
thr = threading.Thread(target=yeni_sekans)
thr.start()

pencere.mainloop()

Oyundaki amacımız ekrana gelen sayıları ezberleyip doğru bir şekilde yazmak. Python ile birlikte gelen modüller ile yazdığımdan hemen kopyalayıp çalıştırabilirsiniz.

2 Beğeni