Python’da Taş-Kağıt-Makas Oyunu (Rock-Paper-Scissors Game)

İbrahim ATLI

Updated on:

Bu makalemizde, çocukluğumuzda hemen hemen herkesin oynadığı veya bir şekilde bildiği Python’da taş-kağıt-makas oyununu anlatacağım.

Uygulama senaryosu
Kullanıcıya bilgi vermesi açısından kaç hakkının olduğunu ve seçeneklerinin neler olduğunu gösterelim sonra bu sahip olduğu hak sayısınca kullanıcıdan taş, kağıt veya makas seçeneklerden birini seçmesi ve karşı taraftan da bilgisayardan bir rastgele bir seçim yapmasını sağlayalım ve sonra kullanıcı seçimini ve bilgisayar seçimini karşılaştırıp kimin kimi yendiğini belirleyelim. kazananmaları halinde +3 puan, beraberlikleri halinde de taraflara 1’er puanı verelim.
Şimdi buraya kadar okuduysan devamına bakmadan sen yapmaya çalış sonradan da yapılışına bakarsın, eminim ki bunu yaparsın.😉

Öyleyse haydi kodlamaya başlayalım:

Yukarıda uygulama senaryosunda anlattığım gibi, burada kullanıcı rastgele bir seçim yapabilmesi için ilgili random kütüphanesini import random ile dahil ettim. kullanıcın kaç kez tahmin edeceğini hak değişkeninde belirledim. hak=4 belirleyip her tahmininde bunu bir adet azalttım ve sıfır  olunca da break ile döngüden çıkıp  programın bitmesini sağladım.
(global kullaniciPuan,PcPuan;)  şimdi şu ifadeyi anlatalım, fonksiyon içinde global tanımlamamın nedeni:

global kullaniciPuan, PcPuan ifadesi, kullaniciPuan ve PcPuan değişkenlerini fonksiyon içerisindeki yerel değişkenler yerine global değişkenler olarak tanımlamak için kullanılır.

Python’da, bir fonksiyon içerisinde bir değişken tanımlarsanız, varsayılan olarak bu değişken yerel bir değişken olarak kabul edilir. Bu durumda, fonksiyon içindeki değişiklikler yalnızca yerel değişkeni etkiler ve global değişkeni değiştirmez. Eğer kullaniciPuan ve PcPuan değişkenlerini global olarak kullanmak ve fonksiyon içindeki değişikliklerin bu global değişkenleri etkilemesini isterseniz, global anahtar kelimesini kullanarak bu değişkenlerin global değişkenler olduğunu belirtmeniz gerekir.

Bu örnekte, tas_kagit_makas() fonksiyonu içinde kullaniciPuan ve PcPuan değişkenlerini global olarak kullanmak için global kullaniciPuan, PcPuan ifadesi kullanılmıştır. Bu sayede, fonksiyon içinde yapılan değişiklikler, bu global değişkenleri etkileyecek ve değerlerini güncelleyecektir.

Kısacası fonksiyon içinde bulunan değişkenler yerel fonksiyon, dışındakiler ise globaldir, biz fonksiyon içindekilerinin başına global yazınca aslında siz de fonksiyon dışındakilerle aynısınız, yani siz de global değerlisiniz demiş oluruz.

 

bu kod parçasını anlatacak olursam:

Bu ifade, üç ayrı koşulun birleşimini kontrol eder:

  1. Kullanıcı “taş” seçtiğinde ve bilgisayar “makas” seçtiğinde.
  2. Kullanıcı “kağıt” seçtiğinde ve bilgisayar “taş” seçtiğinde.
  3. Kullanıcı “makas” seçtiğinde ve bilgisayar “kağıt” seçtiğinde.

Bu koşullardan herhangi biri doğru olduğunda, kullanıcı kazanır çünkü taş makası kırar, kağıt taşı sarar ve makas kağıdı keser.

Eğer bu koşullardan hiçbiri doğru değilse, kullanıcının kaybettiği ve bilgisayarın kazandığı sonucu elde edilir.

Burada or \ şeklinde yazılan  \  işareti, çok satırlı bir ifadeyi birden fazla satıra yaymak için kullanılan bir kaçış karakteridir. Python’da \  işareti, ifadeleri birden fazla satıra bölebilmenizi sağlar, böylece kodunuz daha okunabilir hale gelir.

\ işaretini kullanmasaydık aşağıdaki gibi elif komutunu tek satırda yazmak zorundaydık bu da kodun devamının diğer kısma taşıdığı, okunabilirlik açısından güzel olmadığını bize açıkça gösterir.

 

Özetle bu kod, kullanıcının “Taş”, “Kağıt” veya “Makas” seçeneklerinden birini seçerek bilgisayar ile karşılaştırdığı basit bir Taş-Kağıt-Makas oyunudur. Kullanıcı seçimini yapar ve bilgisayar rastgele bir seçim yapar. Ardından, kullanıcının seçimi ve bilgisayarın seçimi karşılaştırılır ve sonuç ekrana yazdırılır.

 

Yorum yapın