top of page

Sayı Tahmin Oyunu

🌟 Proje Açıklaması:

Sayı Tahmin Oyunu, Python programlama dili kullanılarak geliştirilmiş, kullanıcıların eğlenceli bir şekilde zaman geçirebileceği basit ama etkili bir projedir. Bu oyun, kullanıcıların bilgisayar tarafından rastgele seçilen bir sayıyı tahmin etmeye çalıştığı bir mekanizma sunar. Oyun arayüzü, Tkinter kütüphanesi kullanılarak grafiksel bir biçimde tasarlanmıştır. Tkinter, Python'un GUI (Grafiksel Kullanıcı Arayüzü) uygulamaları için en yaygın kullanılan kütüphanelerinden biri olup, kullanıcı dostu bir deneyim sağlar. Ayrıca, bu projenin web uyumlu bir versiyonu da mevcuttur; bu versiyon PyScript aracılığıyla geliştirilmiş ve herhangi bir web sayfasına kolayca gömülebilecek şekilde tasarlanmıştır. Bu sayede, kullanıcılar oyunu tarayıcı üzerinden de oynama imkanı bulmaktadır.

📌 Amaç:

  • Kullanıcı Etkileşimi: Oyuncular, bilgisayarın rastgele seçtiği bir sayıyı tahmin etmeye çalışacaklar. Doğru sayıyı bulduklarında, onları tebrik eden bir kutlama mesajı ile karşılaşacaklar. Bu, oyuncuların başarı hissini artırmak ve oyunun keyfini artırmak amacıyla tasarlanmıştır.

  • Eğlence: Kullanıcı, doğru sayıyı bulana kadar çeşitli yönlendirmeler alacak. Örneğin, tahmin ettiği sayının daha küçük ya da daha büyük olduğunu belirten ipuçları ile oyuncunun doğru sayıyı bulma süreci daha eğlenceli hale getirilecektir. Bu yönlendirmeler, oyuncuların tahmin süreçlerini daha etkileşimli ve heyecanlı bir hale getirmeyi amaçlamaktadır.

  • Yeniden Başlat: Oyun sona erdiğinde, kullanıcı "Yeniden Başlat" butonuna tıklayarak yeni bir oyun başlatabilir. Bu özellik, oyuncuların oyunu tekrar oynamasını kolaylaştırır ve sürekli bir eğlence kaynağı sunar.

🧠 Öğrenilen Konular:

  1. Tkinter Kütüphanesi: Python'un GUI uygulamaları için kullanılan bu kütüphane, kullanıcı arayüzü elemanları oluşturmak ve kullanıcı ile etkileşim sağlamak için oldukça işlevseldir. Tkinter, butonlar, etiketler, giriş alanları gibi birçok bileşeni kolayca oluşturmanıza olanak tanır ve bu sayede kullanıcı deneyimini zenginleştirir.

  2. PyScript: Web tarayıcısında Python kodlarını çalıştırmak için kullanılan bir kütüphanedir. PyScript, Python'un güçlü özelliklerini doğrudan HTML sayfalarına entegre etmenize olanak tanır. Bu özellik, web uyumlu projeler geliştirmek isteyenler için büyük bir avantajdır. Kullanıcılar, tarayıcı üzerinden Python ile yazılmış uygulamalara erişebilir ve etkileşimde bulunabilirler.

  3. random.randint: Python'da rastgele sayı üretmek için kullanılan bir fonksiyondur. Bu proje kapsamında, bilgisayarın 1 ile 100 arasında rastgele bir sayı seçmesini sağlamak için kullanılır. Bu fonksiyon, oyunun temel mekanizmasını oluşturur ve her oyunda farklı bir deneyim sunar.

🧩 Özellikler:

  • Rastgele Sayı Üretme: Bilgisayar, 1 ile 100 arasında rastgele bir sayı seçer. Bu, her oyunda farklı bir deneyim sunarak oyuncunun sürekli olarak yeni bir meydan okumayla karşılaşmasını sağlar.

  • Tahmin Etme: Kullanıcı, bilgisayarın seçtiği sayıyı tahmin etmeye çalışır. Oyuncuya verilen yönlendirmeler, doğru tahmin yapmasını kolaylaştırır ve bu süreçte eğlenceli bir etkileşim sağlar.

  • Yeniden Başlat Butonu: Oyun sona erdiğinde, kullanıcı "Yeniden Başlat" butonuna tıklayarak yeni bir oyun başlatabilir. Bu özellik, kullanıcıların oyunu tekrar oynama isteğini artırır ve sürekli bir eğlence kaynağı sunar.

  • Web Uyumu: PyScript ile Python kodları HTML içinde çalıştırılabilir ve bu oyun herhangi bir web sayfasına entegre edilebilir. Bu özellik, oyunun daha geniş bir kitleye ulaşmasını sağlar ve kullanıcıların tarayıcılarında kolayca erişim sağlamalarına olanak tanır.




import tkinter as tk  # Tkinter kütüphanesini import ettik
import random  # random kütüphanesi ile rastgele sayı üretiyoruz

# 🎯 Rastgele sayı oluşturuluyor
secret_number = random.randint(1, 100)  # 1 ile 100 arasında rastgele bir sayı seçildi
attempts = 0  # Başlangıçta deneme sayısı 0

# 🎮 Oyunu sıfırlayan fonksiyon
def restart_game():
    global secret_number, attempts  # global değişkenleri kullandık
    secret_number = random.randint(1, 100)  # Yeni bir rastgele sayı seçildi
    attempts = 0  # Denemeleri sıfırlıyoruz
    result_label.config(text="1 ile 100 arasında bir sayı tahmin et!", fg="black")  # Bilgilendirme metnini güncelledik
    guess_entry.delete(0, tk.END)  # Giriş kutusunu temizledik
    attempts_label.config(text="Deneme Sayısı: 0")  # Deneme sayısını sıfırladık

# ✔️ Tahmin edilen sayıyı kontrol eden fonksiyon
def check_guess():
    global attempts  # Deneme sayısını her seferinde arttırmamız gerektiği için global kullanıyoruz
    guess = guess_entry.get()  # Kullanıcının girdiği tahmin sayısını alıyoruz
    guess_entry.delete(0, tk.END)  # Her tahminden sonra giriş kutusunu temizliyoruz

    # Kullanıcı geçerli bir sayı girmemişse hata mesajı veriyoruz
    if not guess.isdigit():
        result_label.config(text="Lütfen geçerli bir sayı giriniz!", fg="red")  # Hata mesajı kırmızı renkte
        return

    guess = int(guess)  # String olan girdiği sayıyı tam sayıya çeviriyoruz
    attempts += 1  # Deneme sayısını 1 artırıyoruz
    
    # Deneme sayısını güncelliyoruz
    attempts_label.config(text=f"Deneme Sayısı: {attempts}")

    if guess < secret_number:  # Sayıdan küçükse, daha büyük tahmin etmesi gerektiğini söylüyoruz
        result_label.config(text="Daha büyük bir sayı gir! 🔼", fg="blue")
    elif guess > secret_number:  # Sayıdan büyükse, daha küçük tahmin etmesi gerektiğini söylüyoruz
        result_label.config(text="Daha küçük bir sayı gir! 🔽", fg="blue")
    else:  # Eğer sayıyı doğru tahmin ettiyse, tebrik mesajı gösteriyoruz
        result_label.config(text=f"Tebrikler! 🎉 Doğru sayı: {secret_number}", fg="green")

# 🪟 Tkinter penceresini oluşturuyoruz
root = tk.Tk()
root.title("Sayı Tahmin Oyunu")  # Pencere başlığı
root.geometry("400x300")  # Pencere boyutları

# 📢 Bilgilendirme etiketi
result_label = tk.Label(root, text="1 ile 100 arasında bir sayı tahmin et!", font=("Helvetica", 14))  # Başlangıç mesajı
result_label.pack(pady=10)

# 🔢 Tahmin girişi için bir kutu
guess_entry = tk.Entry(root, font=("Helvetica", 14), justify="center")  # Giriş kutusunu oluşturuyoruz
guess_entry.pack(pady=10)

# 🧠 Tahmin et butonu
guess_button = tk.Button(root, text="Tahmin Et", command=check_guess, font=("Helvetica", 12))  # Buton oluşturuluyor
guess_button.pack(pady=5)

# 🔄 Yeniden başlat butonu
restart_button = tk.Button(root, text="Yeniden Başlat 🔁", command=restart_game, font=("Helvetica", 12))  # Yeniden başlat butonu
restart_button.pack(pady=5)

# 🔢 Deneme sayısını gösteren etiket
attempts_label = tk.Label(root, text="Deneme Sayısı: 0", font=("Helvetica", 12))  # Deneme sayısını başta 0 yapıyoruz
attempts_label.pack(pady=10)

# 🌟 Pencereyi sürekli açık tutuyoruz
root.mainloop()



Project Gallery

bottom of page