Python Günlükleri: İlk oyunumuzu yazalım mı?

Elif
5 min readAug 1, 2022

Merhaba sevgili dostlar!
Şimdiye kadar öğrendiğimiz temel Python bilgilerimizle bir Taş-Kağıt-Makas oyunu tasarlamaya ne dersiniz?

Bu gerçekten garip ve heyecan verici bir deneyim olacak. Python’a dair azıcık bir bilgimiz var ama bununla bir algoritma oluşturup bilgisayara karşı Taş-Kağıt-Makas oynamak için bir kod yazacağız.

Şimdiye dek öğrendiğimiz bilgiler: Python söz dizilimi ve operatörleri.

Bu konuları içeren yazılarımı okumadıysanız okumanızı tavsiye derim. Ve tabi ki öncelikle Taş-Kağıt-Makas oyununu bilmeyen yoktur ama ya bilmeyeniniz varsa diye buraya bi bilgilendirme eklemeliyim.

Hadi şimdi bir oyun geliştirici olarak ilk oyunumuzu yazalım! ‍🚀

Şimdi bir düşünelim. Taş-Kağıt-Makas oyununu bilmeyen biriyle oynamak için öncelikle ona kuralları anlatırız. Kurallar basitçe şöyledir.

Bu oyun iki kişilik oynanan bir oyundur. Oyunda 3 seçeneğimiz var: Taş, kağıt, makas. Benimle aynı anda bu seçeneklerden birini tercih etmen gerekiyor. Seçilenlere göre kazanan/kaybeden belirlenir.

Taş-Makas seçiminde: Taş makası kırar bu sebeple taş, kağıda karşı kazanmış olur.

Kağıt-Taş seçiminde: Kağıt taşı sarar. Böylece kağıt taşı yenmiş olur.

Makas-Kağıt seçiminde: Makas kağıdı keser. Bu durumda makas kağıda üstünlük göstermiş olur.

Aşağıda bu ayrıntı görselleştirilmiştir.

Taş-Kağıt-Makas Oyununda ögelerin nasıl bir etkileşimde olduklarını gösteren bir şablondur.

Oyunu bir insana anlatmış olduk. Şimdi bunları bir de Python diliyle programımıza tanımlayacağız:

Öncelikle seçenekleri bir liste olarak tanımlamamız gerekir.

Artık eylemlerin hazır olduğu listeye sahipsiniz. Bir sonraki adım, Python’un bu listeden rastgele bir eylem seçmesine izin vermektir. Her oyuncunun bir seçim yapması gerekir, bu nedenle Python, oyuncu 1 ve oyuncu 2 için bir seçim yapmak zorundadır. Bu kısım için rastgele modülden faydalanacağız. Bu sebeple .randint() ‘ti çağıracağız.

random.randint(0,2) yazarak; 0: Taş ; 1: Kağıt ; 2: Makas ; 0'dan 2'ye kadar listeden rastgele bir seçim yapmasını tanımlıyoruz.

Buraya kadar her şey tamam mı diye bi kontrol ettikten sonra şimdi kazananı tanımlama yani kazanma koşullarını programımıza yazmaya başlıyoruz:

İlk olarak, her iki oyuncunun da aynı eylemi seçtiği sonucuyla başlayalım: bu beraberliktir. Beraberlik durumunda, oyun bize şu açıklamayı çıktı versin.

“Tekrar deneyiniz! Her iki oyuncu da aynı eylemi seçti!”

Şimdi, kalan sonuçlara odaklanalım. Üç farklı eylemimiz var: taş, kağıt ve makas. Bu, tüm olası kombinasyonların bir listesi aşağıdaki gibidir (beraberlikle sonuçlananlar hariç):

(taş, kağıt)
(taş, makas)
(kağıt, taş)
(kağıt, makas)
(makas, taş)
(makas, kağıt)

📌İki eylemi tek bir koşullu ifadede birleştirmek için bazı operatörleri kullanacağız. Dilerseniz burada “elif-and-else” ile de tanımlayabilirsiniz ben size “elif-if-else” ile yazmayı göstereceğim.

Şimdiye kadar yazdığımız kısmı çalıştırdığımızda:

Oyuncu1 ve Oyuncu2, listede tanımlanmış olan 3 seçenekten birini rastgele seçmekte ve farklı olasılıklar dahilinde hangisinin kazanmış olduğu çıktı olarak verilmektedir.

Ancak biz genellikle Taş-Kağıt-Makas oyununu tek seferlik oynamayız. Genellikle 3 veya 5 rounddan oluşmaktadır. O zaman şimdi bir de bu kodumuzu birden çok tur sayısına göre yazalım.

Öncelikle oyunu kaç tur oynayacağımızı girelim. Bunun için “input” işlevini kullanacağız. Ek olarak oyunumuz birden fazla tur olduğu için skoru takip etmemiz gerekmekte. Bunun için başlangıçta her oyuncu için 0 olan bir değişken oluşturmanız gerekiyor.

📌Kaç tur oynamak istediğimizi belirttiğimizde bu bilgiyi kullanmamız için oyunu bir for döngüsünün içine koymalıyız. Döngüyü belirli sayıda tekrarlamak için bir for döngüsü ve range() işlevini kullanmalıyız.

📌Tur sayısı girdisini veri tipi tamsayısına dönüştürmemiz gerekmektedir. Bunun için int() fonksiyonunu kullanabiliriz.

📌Ek olarak tur sayısı bitene kadar her turda oyuncuların puanını aklında tutup artırmayı ve her turdan sonra mevcut puanı yazdırma işlemini yazmalıyız. Bunun için +=1 atama operatörünü kullanacağız.

Bu önemli ek bilgilendirmelerden sonra programımızı çalıştırmak için tüm bileşenlerimizi yeniden sıralı bir şekilde düzenleyerek yazalım:

Tur sayısını 3 olarak girdiğimde programın şuana kadar yazdığımız kodlarla verdiği sonuç yukarıdaki gibi olmuştur. Tabi ki yukarıdaki sonuçlar kesin değildir. Benim o anlık çalıştırdığım program için bu veriler elde edilmiştir.

Oyunumuz görüldüğü gibi sorunsuz bir şekilde çalışıyor ve kullanıcı oyunu manuel olarak sonlandırabiliyor. Buraya kadar her şey çok güzel. Her turda hangi oyuncunun kazandığını açıkça görebiliyoruz. Programımızı bu şekilde yazabilir ve bitirebiliriz.

Ancak hadi bunu daha havalı hale getirelim! 💪😎

Kullanıcıya kaç tur oynamak istediğini soralım ve bu tur sayısı tamamlandığında tüm turların galibi olan oyuncuyu ve skorunu yazdıralım.

📍 Başlangıç olarak Sonsuz bir döngüyü önlemek için, başlangıçta 0 olan bir tur_sayısı eklemeniz gerekecek. Ve bunu tanımlarken her turda bu sayacın 1 artması gerektiğini de belirtmeliyiz. Bu ifadeyi, oyuncuların skorlarının 0 olarak başlatıldığı kod satırından sonra girebiliriz.

📍Ek olarak döngünüzün sonunda, tur_sayısı’nın kullanıcıdan girdi olarak aldığımız toplam tur sayısına eşit olup olmadığını kontrol etmek için de bir “if” koşulu eklememiz gerecektir. Bu durumda oyunu bitirmek için “break” kullanmamız gerekecek. Yoksa programımız sonsuza dek çalışır.

Hadi bu düzenlemelerden sonra oluşacak kod satırlarımıza bir bakalım. Ben burada vermiş olduğum tüm bilgilendirmeler neticesinde tüm kod dizilimini aşağıya yazdım.

Taş-Kağıt-Makas Oyunumuzun tamamlanmış hali yukarıdaki gibidir.
Örnek bir sonuç.

Evet! Başlangıç seviyesinde bir oyun yazdık. Sorunsuz da çalışıyor! Bu projemiz basitti ama Python’un neredeyse temelini iyice kavramış olduk. Siz de eğer Python’a yeni başlamış iseniz bu kodları kendiniz farklı isimler tanımlayarak yazıp kendi oyununuzu yazın.

Böyle ufak ufak Python projeleri paylaşmaya devam edeceğim. Takipte kalın. 🤟🏾

--

--