Algoritma ve Programlama Dünyası — Uygulama 7 (Tahmin Oyunu)

Turhan Can Kargın
Kodcular
Published in
3 min readApr 18, 2024

Merhaba sevgili okuyucular! Algoritmaların sadece karmaşık problemleri çözmek için değil, aynı zamanda eğlenceli ve etkileşimli oyunlar oluşturmak için de kullanılabileceğini biliyor muydunuz? Serimizin önceki bölümlerinde, birçok popüler sıralama algoritması hakkında konuştuk. Bu yazıda ise biraz eğlenelim ve basit bir tahmin oyunu yapalım! Bu oyunu C++ dilinde gerçekleştireceğiz!

Photo by Riho Kroll on Unsplash

Oyunun Amacı

Oyunumuzun temel amacı, kullanıcının belirli bir sayıyı tahmin etmesidir. Program, her başlangıçta 1 ile 50 arasında rastgele bir sayı üretir. Kullanıcıya bu sayıyı tahmin etmek için 5 hakkı vardır. Kullanıcının tahmin ettiği sayı üretilen sayıdan daha büyükse, “Sayıyı Küçült” mesajı gösterilir. Tahmin edilen sayı daha küçükse, “Sayıyı Büyüt” mesajı gösterilir. Kullanıcı sayıyı tahmin ettiğinde, “Tebrikler” mesajı gösterilir ve oyun sona erer. Ancak, kullanıcı tüm haklarını kullanırsa ve hala sayıyı tahmin edemezse, “Kaybettin” mesajı gösterilir ve oyun sona erer.

Oyunun Algoritması

Oyunumuzun algoritmasını Pseudocode (Sözde Kod) ile aşağıda belirtelim:

BAŞLA
rastgele_sayi = 1 ile 50 arasında rastgele sayı üret
haklar = 5

DÖNGÜ haklar > 0 olarak:
tahmin = kullanıcıdan sayı al

EĞER tahmin > rastgele_sayi ise:
yazdır("Sayıyı Küçült")
YOKSA EĞER tahmin < rastgele_sayi ise:
yazdır("Sayıyı Büyüt")
YOKSA:
yazdır("Tebrikler")
ÇIKIŞ
haklar = haklar - 1

yazdır("Kaybettin")
BİTİR

C++’da Tahmin Oyunu Uygulaması

C++’da Tahmin Oyunu’nun uygulamasına geçmeden önce, C++’nın rastgele sayı üretme özelliklerine aşina olmamız gerekiyor. C++’da rastgele sayı üretmek için <random> kütüphanesini kullanırız. Ayrıca girdi/alma işlemleri için <iostream> kütüphanesini kullanacağız. Bu kütüphanelerin yardımıyla, oyunumuzun uygulamasını gerçekleştirebiliriz.

C++ dilindeki kodumuzu aşağıda bulabilirsiniz. (Kodun nasıl çalıştığını anlamak için her bir satırı dikkatlice okuyunuz.)

#include <iostream>
#include <random>

int main() {
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> distr(1, 50);

int rastgele_sayi = distr(gen);
int haklar = 5;
int tahmin;

while (haklar > 0) {
std::cout << "Bir sayı tahmin edin: ";
std::cin >> tahmin;

if (tahmin > rastgele_sayi) {
std::cout << "Sayıyı Küçült!\n";
} else if (tahmin < rastgele_sayi) {
std::cout << "Sayıyı Büyüt!\n";
} else {
std::cout << "Tebrikler, sayıyı doğru tahmin ettiniz!\n";
return 0;
}

haklar--;
}

std::cout << "Üzgünüm, tüm haklarınızı kullandınız. Kaybettiniz!\n";

return 0;
}

Örnek çıktılar aşağıda verilmiştir:

Bir sayı tahmin edin: 25
Sayıyı Küçült!
Bir sayı tahmin edin: 10
Sayıyı Büyüt!
Bir sayı tahmin edin: 17
Sayıyı Büyüt!
Bir sayı tahmin edin: 21
Sayıyı Küçült!
Bir sayı tahmin edin: 19
Tebrikler, sayıyı doğru tahmin ettiniz!
Bir sayı tahmin edin: 25
Sayıyı Küçült!
Bir sayı tahmin edin: 15
Sayıyı Küçült!
Bir sayı tahmin edin: 10
Sayıyı Küçült!
Bir sayı tahmin edin: 4
Sayıyı Büyüt!
Bir sayı tahmin edin: 7
Sayıyı Büyüt!
Üzgünüm, tüm haklarınızı kullandınız. Kaybettiniz!

Algoritmanın Zaman ve Hafıza Karmaşıklığı

Oyunumuzun zaman ve hafıza karmaşıklığına gelirsek, kullanıcıdan bir sayı alıp karşılaştırma işlemini 5 kez tekrarlıyoruz. Bu yüzden zaman karmaşıklığımız O(1), yani sabittir. Hafıza karmaşıklığı da O(1) olarak kabul edilebilir, çünkü sabit sayıda değişkenimiz var ve bu değişkenlerin sayısı girdinin büyüklüğüne bağlı değildir.

Bu oyun, algoritmaları daha iyi anlamanıza ve C++ dilini daha etkin bir şekilde kullanmanıza yardımcı olacaktır. Bol pratik yapın ve eğlenin!

Umarım bu yazı, algoritmalar ve programlama hakkında bilginizi geliştirmenize yardımcı olmuştur. Sorularınız varsa, yorum bırakmayı unutmayın. Bir sonraki yazıda görüşmek üzere!

Eğer bu yazıyı beğendiyseniz aşağıdaki alkışa istediğiniz kadar tıklayarak yazılarıma destek olabilirsiniz :)

Herhangi bir sorunuz olursa veya benimle iletişim kurmak isterseniz, tüm sosyal medya hesaplarım aşağıdaki linkte yer alıyor.

Ayrıca diğer blog yazılarımı aşağıda yer alan websitem üzerinden takip edebilirsiniz.

Bir sonraki yazıda görüşmek üzere!

--

--