Python ile Taş-Kağıt-Makas Oyunu

Berivan Küçükkart
Yetkin Yayın
Published in
3 min readJun 14, 2022
Photo by Marcus Wallis on Unsplash

Büyük Patlama’dan sonra gezegenimiz Dünya oluştu, evrimsel süreçlerden geçen ilk organizma, Homo Sapiens’e dönüştü. Eğitim sistemi gelişti, üniversiteler kuruldu. Final sınavları keşfedildi ve bir öğrencinin sınav döneminde canı sıkıldı. Ve böylece siz, bugün bu yazıyı okuyorsunuz.

Mantığını Anlayalım

İşe yapacağımız şeyin mantığını anlamakla başlayalım. Sıradan taş-kağıt-makas oyunu en az 2 kişi arasında oynanan ve her hareketin diğerine göre üstünlüğü baz alınarak kazanan ve kaybeden tarafları belirleyen basit bir oyundur.

Yazacağımız programda oyun bilgisayar ile kullanıcı arasında oynanacak. Bilgisayardan arka planda random olarak taş, kağıt veya makas seçeneklerinden birini seçmesini isteyeceğiz. Ardından kullanıcıdan aldığımız girdi (input) ile bilgisayarın random seçtiği değeri karşılaştırıp kullanıcının kazanıp kazanmadığını belirteceğiz.

Eğer kullanıcı kazandıysa +1, kaybettiyse -1 puan alacak. Beraberlik durumunun puana bir etkisi olmayacak. Kullanıcı oyundan çıkmak istediğinde herhangi bir harfi tuşlayacak ve final puanını görebilecek.

Bunu yaparken while döngüsü içinde if statement kullanacağız. Mantıken 4 farklı if statement ile oyunu programlayabilmemiz gerekiyor. Ek olarak program kullanıcıdan farklı bir değer aldığında toplam puanı göstermesi için bir else kullanacağız.

Programlamaya Başlayalım

Öncelikle bilgisayardan rastgele değerler seçmesini isteyeceğimiz için Python’un standart kütüphanesinde yer alan random modülünü çağırmamız gerekiyor:

from random import randint 

Puan adında bir değişken belirleyip değerini 0'a eşitleyerek başlangıçta kullanıcının 0 puanı olduğunu ve while döngüsünün içinde kazanma/kaybetme sayısına göre bir final puanı elde edeceğini biliyoruz. Bunun için while döngüsüne başlamadan aşağıdaki gibi bir kod satırı eklememiz gerekiyor:

Not: Eğer bu satırı döngünün içine eklersek puan sürekli sıfıra eşitlenecektir. Toplam puan sonuç fark etmeksizin 0 olarak gözükecektir.

puan = 0

Artık while döngümüze başlayabiliriz:

while True:    secenekler = [“taş”, “kağıt”, “makas”] 
#bir liste oluştur
bilgisayar = secenekler[randint(0,2)]
#Bilgisayar: listeden rastgele seç
kullanıcı=input(“taş,kağıt,makas?(Bitirmek=herhangi bir harf.)”)
#kullanıcıdan veri al

Önce bir liste oluşturup listenin içine “taş”, “kağıt” ve “makas” ögelerini yerleştireceğiz. Bilgisayarımız her seferinde bu listenin içinden rastgele bir eleman seçecek. Bu işlemi bilgisayar = secenekler[randint(0,2)] kodu ile yapmasını sağlıyoruz.

Not: Listelerden ilk eleman sıfırıncı elemandır. Dolayısıyla (0,2) dediğimizde ilk elemandan başla 3. eleman dahil olmak üzere aralarından rastgele seç demiş oluyoruz.

Sonraki satırda ise kullanıcıdan girdi almak yoluyla tercihini soruyoruz.

Bu noktada artık if statement kısmına geçebiliriz.

İlk olarak kullanıcı ile bilgisayarın berabere kaldığı durumla başlayalım:

if kullanıcı == bilgisayar:    print(“Berabere!”)

Diğer olasılığımız kullanıcının taş seçmesine karşın bilgisayarın kağıt veya makas seçmesi:

elif kullanıcı == “taş”:    if bilgisayar == “kağıt”:
puan = puan -1
print(“Kaybettiniz.”, bilgisayar, kullanıcı , “ı sarar.”)
else:
puan = puan +1
print("Kazandınız.", kullanıcı, bilgisayar, "ı kırar.")

Üçüncü olasılığımız kullanıcının kağıt seçmesine karşın bilgisayarın makas veya taş seçmesi:

elif kullanıcı == "kağıt":    if bilgisayar == "makas":
puan = puan -1
print("Kaybettiniz.",bilgisayar, kullanıcı , “ı keser.”)
else:
puan = puan+1
print("Kazandınız", kullanıcı, bilgisayar, "ı sarar.")

Son olasılığımız ise, kullanıcının makas seçmesine karşın bilgisayarın taş veya kağıt seçmesi:

elif kullanıcı == "makas":    if bilgisayar == "taş":
puan = puan -1
print("Kaybettiniz.",bilgisayar, kullanıcı , “ı kırar.”)
else:
puan = puan +1
print("Kazandınız", kullanıcı, bilgisayar, "ı keser.")

Bütün olasılıklarımızı hesapladık. Artık sadece kullanıcının oyunu bitirmesi durumunda final puanını göstermek kaldı. Hala while döngüsünün içindeyiz.

else:
print("Final puanınız: ", puan)
break #döngüyü kırmak için

Tebrikler!

Python ile taş-kağıt-makas oyunu programlama yazımızın sonuna geldik. Oyunun tamamı 35 kod satırından oluşuyor ve şu şekilde gözüküyor:

Photo by Ian Schneider on Unsplash

Başka yazılarda görüşmek üzere!

-Berivan Küçükkart

--

--