Çoktan Seçmeli Kelime Oyunu

Resim:

kelimequiz

Özellikler:

  • TDK API’den aldığı verileri üç ayrı şıkka atar.
  • Doğru cevap olması halinde + 50 puan verir ve ses ile haber verir.
  • Yanlış cevap olması halinde doğru cevabı gösterir, - 50 puan alır, ses ile haber verir ve kelimeyi ve doğru cevabı bir dosyaya yazdırır(eğitim için).

Modüller:

  • beepy(pip3 install beepy)
  • request(pip3 install requests)
  • Kalan modüller öntanımlıdır.

Kod:

# Samet Güzelgün 04.10.23
import tkinter as tk
from tkinter import messagebox
import requests
import random
import beepy
cevap = ""
anlam = ""
dogru = ""
siklar = []
kontrol_lst = []
puan = 0
def basla():
    yeni_soru()
def set_cevap(cvp):
    global cevap
    cevap = cvp
    kontrol()
def kontrol():
    global kontrol_lst,cevap,dogru,puan,siklar,puan_etkt,anlam
    if kontrol_lst[int(cevap)] == dogru:
        beepy.beep()
        puan += 50
        puan_etkt["text"] = "Puan: " + str(puan)
        siklar.clear()
        yeni_soru()
    else:
        beepy.beep(sound=3)
        puan -= 50
        puan_etkt["text"] = "Puan: " + str(puan)
        dosya = open("yanlis_kelimeler.txt","a")
        dosya.write("\nKelime: {}\nAnlamı: {}".format(dogru,anlam))
        dosya.close()
        messagebox.showinfo("Yanlış!","Doğrusu:{}".format(dogru))
        siklar.clear()
        yeni_soru()
def yeni_soru():
    global buton1,buton2,buton3,siklar,dogru,anlam,anlam_etkt,kontrol_lst
    firefox = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'}
    while len(siklar) < 3:
        a = requests.get("https://sozluk.gov.tr/taramaId?id=" + str(random.randint(0,14488)),headers=firefox)
        b = a.text.split(",")[1].split(":")[1].replace("\"","")
        dogru = b
        anlam = a.text.split(":")[3].split(",")[0].replace("'","").replace("\"","")
        if b not in siklar:
            siklar.append(b)
    anlam_etkt["text"] = "Anlam: " + anlam
    kontrol_lst = siklar
    random.shuffle(siklar)
    buton1["text"] = "A: " + siklar[0]
    buton2["text"] = "B: " + siklar[1]
    buton3["text"] = "C: " + siklar[2]
pencere = tk.Tk()
anlam_etkt = tk.Label(text="Kelime anlamı:")
anlam_etkt.grid(row=0,column=2)
buton1 = tk.Button(text="A:",command=lambda:set_cevap("0"))
buton1.grid(row=5,column=1)
buton2 = tk.Button(text="B:",command=lambda:set_cevap("1"))
buton2.grid(row=5,column=2)
buton3 = tk.Button(text="C:",command=lambda:set_cevap("2"))
buton3.grid(row=5,column=3)
basla_btn = tk.Button(text="Yeni Soru",command=basla)
basla_btn.grid(row=7,column=2)
puan_etkt = tk.Label(text="Puan:")
puan_etkt.grid(row=7,column=3)
pencere.title("Kelime Quiz")
pencere.resizable(0,0)
yeni_soru()
pencere.mainloop()

Geliştirme önerilerinizi bekliyorum.

2 Beğeni

pyqt5-6 öneririm hocam daha güzel olacağını düşünüyorum

Öneriniz için teşekkürler, şu sıralar kendimi eğlendiriyorum programlayarak. Ciddi birşey düşündüğümde yaparım.