Bilgisayar Mühendisliği

Python Sayı Tahmin Oyunu Yapımı (Kodlar)

Bu yazıda çok temel düzeyde bir kodlama bilgisine sahip herkesin anlayabileceği şekilde Python sayı tahmin oyunu yapacağız. Gereken tek şey bilgisayarımızın not defteri ve kodları denemek için birazcık da internet.

(1) Python Sayı Tahmin Oyunu Özellikleri

Dinamik Oyun Alt Yapısı: İstediğimiz genişlikte oyun oluşturabilme ve bu genişliğe göre değişen tahmin hakkı sayısı

Mini Fonksiyonlar:
-Oyunu bilmeyen birisinin bile 1 tur deneme ile oyunun mantığını çözmesini sağlayan metinler,
-Oyunu iptal edebilme,
-Oyun bitiminde doğru cevabı görme,
-Her tur kalan tahmin hakkını görme,
-Sayıyı büyüt, küçült çıktıları,
-Ve niceleri

Python Sayı Tahmin Oyunu
Python Sayı Tahmin Oyunu

Renkli ve Ferah Arayüz: Sıkıcı, monoton ve kişiyi bayan aralıksız ve tek renkten oluşan çıktılar yerine, renkli ve boşluklu çıktılar

Not: Tabi bu renkli çıktı olayının Python 3 ve üzeri sürümlerde çalıştığını baştan belirtelim.

Hata Ayıklama: Kazanma / kaybetme olayında tüm durumların teker teker ele alınması

(2) Python Sayı Tahmin Oyunu Yapımı

2.1 Dinamik Alt Yapının Ayarlanması

İlk olarak not defterini açalım. Sayılar otomatik olarak seçileceği için, rastgele özelliğini çağıralım.

#https://www.technogezgin.com
import random

Daha sonra ise oyunu kısaca tanıtan bir çıktı (print) fonksiyonu yapalım.

Ama insanlar sonuna kadar bunu okusunlar diye “herhangi bir değişkene eşitleme yapmadan” input şeklinde girelim. Yani şöyle:

input("""\u001b[31m -----------------Python Kelime Tahmin Oyunu-----------------
\u001b[34mKurallar:
(1) Oyunun başında senden bir sayı yazman istenir. 10'dan büyük bir 
sayı belirliyorsun.
(2) 0 ile belirlediğiniz sayı arasında bir tahmin yapacaksınız.
(3) Belirlediğin aralığın yaklaşık %30'u kadar tahmin hakkınız var. 
\u001b[30mYoksa anlamadınız mı? O zaman deneyerek öğrenelim :)
Devam etmek için "enter" tuşuna basınız...""")
print()

Gel gelelim Python sayı tahmin oyunu uygulamamızın ana mekaniğine. Globalde aralık diye bir değişken atıyoruz. Daha sonra aralık belirleme diye de bir fonksiyon tanımlıyoruz.

def aralıkbelirleme():
    global aralık
    aralık = int(input("\u001b[34mTahmin edeceğin sayı 1 ile kaç arasında olsun? (En az 10 yazınız)"))
    if aralık < 10:
        print("\u001b[31mHile yapmayalım :) Üst sınır en az 10 olmalıdır.")
        print()
        aralıkbelirleme()

aralıkbelirleme()

Bu fonksiyonda biz oyuncunun tahmin yapacağı aralığı seçmesini istiyoruz. Mesela 15 değerini girerse 0 ile 15 arasındaki bir sayıyı tahmin etmesi gerekecek.

Tabi düzgün olarak çalışabilmesi için “global aralık” ibaresini eklemeyi ve input’u integer (tam sayı) olarak istemeyi de unutmuyoruz.

Cevap hakkını da DİNAMİK BİR ŞEKİLDE sınırlamamız gerek. Yoksa adam tek tek dener durur.

Technogezgin.com Bilgi
Mesela 10 cevap hakkı verdik diyelim. Belki 20-30 sayı arasında 10 hak normaldir ama 10 sayı veya 300 sayı arasından tahmin yaparken 10 cevap hakkınızın olduğunu düşünsenize?

İşte bu sorunun önüne geçmek için python sayı tahmin oyunu yapımı esnasında her şeyi dinamik bir alt yapı ile yapmaya çalışıyoruz.

hak = aralık // 3
dogrucevap = random.randint(0, aralık)
tahminnumarasi = 0
tahmin = 0

Hak değişkenini de bunun için kullanıyoruz ama dikkat edin hata olmaması için float değil integer şekilde olması gerekiyor.

2.2 Python Sayı Tahmin Oyunu Kazanma / Kaybetme Dinamiği

Gel gelelim dananın kuyruğunun koptuğu yere. Burada ise Python sayı tahmin oyunu için asıl kazanma mekaniğini yapacağız.

while True:
    tahminnumarasi += 1
    tahmin = int(input("1 ile {} arasında değer girin (Çıkış için 0'ı tuşlayınız.):".format(aralık)))
    if tahminnumarasi == hak:
        print("\u001b[31mYolun sonu... Kaybettin! Şansını tekrar denemeye ne dersin?")
        print("Doğru Cevap: {}".format(dogrucevap))
        break
    if (tahmin == 0):
        print("\u001b[31mOyunu iptal ettiniz, iyi günler dileriz.")
        break
    elif tahmin < dogrucevap:
        print("Numarayı büyütmeye ne dersin hocam?")
        tahmin = print("Durum / Tahmin Hakkı: {} / {}".format(tahminnumarasi, hak))
        print()
        continue
    elif tahmin > dogrucevap:
        print("Hocam daha küçük bir tahmin yapsan?")
        tahmin = print("Durum / Tahmin Hakkı: {} / {}".format(tahminnumarasi, hak))
        print()
        continue
    elif tahmin == dogrucevap:
        print("\u001b[32mTebrikler! Kazandın, tekrar daha geniş bir aralıkla oynamaya ne dersin? ^^")
        break
    else:
        print("\u001b[31mYolun sonu... Kaybettin! Şansını tekrar denemeye ne dersin?")
        print("Doğru Cevap: {}".format(dogrucevap))
        break

Peki biz burada ne yaptık?

.# Tahmin yapacağı aralığı hatırlatarak değer girmesini istiyoruz.

.# Her tahmin yapıldığında, kişinin yapılan tahmin sayısının ve maksimum hakkını görmesini sağlıyoruz.

.# Kazanma, kaybetme, doğru tahmin / yanlış tahmin durumları için ayrı ayrı çıktı mesajları hazırlıyoruz.

.# Bir de kişinin oyundan pes edip çıkabilmesi için de mini bir özellik ekledik.

(3) Görsel Üzerinden Çıktı Örneği

Python Sayı Tahmin Oyunu - Çıktı
Python Sayı Tahmin Oyunu – Çıktı

(4) Kodları Geliştirmek İsteyenlere Efsane Fikirler

Bunlar beni kesmez ama python sayı tahmin oyunu için ne tarzda özellik eklemem lazım bilemiyorum diyorsanız aklıma gelen kimi fikirleri paylaşayım.

Değişik Zorluk Ayarları: Oyunun başında zorluk seçimi, zorluk arttıkça tahmin hakkı oranı düşer. (Biz hak // 3 diyerek yaklaşık %33’lük bir oran belirlemiştik mesela)

Hata Ayıklama: Diyelim ki oyuncunun eli kaydı ve oyunun en heyecanlı yerinde sayı yerine başka tuşlara bastı. Ve oyun çöktü, üstelik en kritik anda ve kişinin yeniden açması gerekecek 🙂

İşte bunun önüne geçmek için oyuna fonksiyon tanımlayabilir, tam sayı harici girilen değerlerden sonra hata mesajı çıktı almasını sağlayıp oyunun kaldığı yerden devam etmesini de sağlayabilirsiniz.

Sıcak Soğuk Oyunu: Yine ek olarak yazacağınız bir algoritma ile, oyuncunun yaptığı tahmin ile gerçek sayının arasındaki uzaklığa bağlı olarak sıcak veya soğuk tarzında çıktı almasını da sağlayabilirsiniz.

Veya biraz arttır, baya arttır gibi çeşitli çıktılar da ekleyebilirsiniz.

TechnoGezgin.com Soru
Burada en az programın kendisi kadar önemli olan bir husus var. O da kod yoğunluğunun ve değişken sayısının olabildiğince az olması. Bir işlemi ne kadar az kodla yaparsak hem bilgisayar, hem de bizler o kadar az yoruluruz. Bu sebeple değişken sayısını azaltabilirsiniz.
Detaylı Bilgi İçin: Başarılı / İyi Program Nasıl Olmalıdır?

4.1 Bunu Nasıl Çalıştıracağım?

  • Bilgisayarında Python yüklü olanlar onla,
  • Yüklü olmayanlar Jupiter Editor sitesinde “classic notebook” seçeneğini seçerek
  • Veya Google Colab Python Notebook sitesinden online olarak çalıştırıp deneyebilirler.

4.2 Renkli Kodlar Çalışmadı Ne Yapmalıyım?

Çalışmadı ve üstüne üstlük hatalı bir görüntü aldıysanız tek yapmanız gereken kodda bulunan şu tarz ibareleri kaldırmak olacaktır:

\u001b[31m

Technogezgin.com Bilgi
Peki sizce ‘Python oyun yapımı‘ uygulamalarından birisi olan ‘Python sayı tahmin oyunu‘ uygulamasını nasıl geliştirebiliriz? Eklemek istediklerinizi yorumlar vasıtasıyla ekleyebilirsiniz.

Ayrıca sormak istediğiniz soruları ve (eğer varsa) yanlışları yorumlar aracılığıyla belirtebilirsiniz. Yazının bağlantısını da aşağıdaki butonları kullanarak gönül rahatlığı ile paylaşarak bize büyük bir iyilik yapabilirsiniz.

Ana Sayfa: 
https://www.technogezgin.com/
Hayata Dair Özgün ve Kaliteli Yazılarımız: 
https://www.technogezgin.com/blog/

MrKaptainTR

Merhabalar. Ben bu internet sitesinin sahibiyim. Aynı zamanda Hacettepe Üniversitesi'nde bilgisayar mühendisliği okuyorum. Bu sitede de; ufkunuzu açacak, bilgi hazinenizi katlayacak, bakış açınızı adeta uçuracak, “Vay be, adamlar bunu da mı yapmış?” dedirtecek cinsten içerikler üretmeye çalışıyorum.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu
Kapalı