Taş Kağıt Makas

Ödeve Başlamadan Önce

CS 101: Merhaba, Dünya! programının ilk ödevi olarak klasik bir oyunu oynayacağız. Bu ödeve başlamadan önce dikkat etmeniz gerekenler:

  1. Bu ödevin teslim tarihi 27 Kasım 2020 Cuma 23:59‘dur.
  2. Lütfen ödevin adımlarını dikkatlice okuyun ve programınızı yazarken bu adımları takip ederek kodunuzu yazmaya çalışın.
  3. Bu ödev ders ve grup çalışmalarında üzerinden geçtiğimiz konuları pekiştirmeniz için güzel bir fırsat, bu sebeple aklınıza takılan noktalarda Ders materyallerini tekrar etmenizi öneriyoruz.
  4. Unutmamanız gereken şey problemi parçalara ayırmak ve tabii ki bunu programı yazarken fonksiyonlarla yaptığımız için kendi fonksiyonlarınızı tanımlamınızı çok önemsiyoruz!
  5. Ödevinizi Ed üzerinden teslim edeceksiniz.
  6. Ödevi yaparken aklınıza takılan her soru için Ed üzerinden bize soru sorabilirsiniz.
  7. Bu ödev notlandırılmayacak ancak eğitmenleriniz kodunuzu detaylıca inceleyerek size Ed üzerinden geri bildirim ve önerilerde bulunacaklar. Programı başarıyla tamamlayıp sertifika alabilmek için mutlaka ödevlerinizi teslim etmelisiniz.

Başarılar!

Başlangıç Kodları

Buraya tıklayarak ödeve ait başlangıç kodlarına ulaşabilirsiniz.

Genel Bakış

Bilgisayar Havalı’nın canı çok sıkıldığı için bizimle taş kağıt makas oynamak istiyor. Oyun 3 tur sürüyor (programınız tur sayısını değiştirdiğimizde çalışmalı, yani alt alta aynı kodu yazmamalı derste öğrendiğimiz kavramları kullanmalıyız :)). Oyunun kuralları basit:

  • Kağıt taşı sarar,
  • Makas kağıdı keser,
  • Taş makası kırar,
  • Verilen tur sayısının sonunda en çok skor alan oyunu kazanır.

Havalı’nın seçeneği yine bilgisayar tarafından rasgele şekilde atanıyor. Bu rastgele seçimi biz sizin için yaptık. Projenin geri kalanında, oyuncudan taş, kağıt ve makas seçeneklerinden birini seçmesini isteyip daha sonra yukarıdaki kazanma koşullarına göre Havalı’nın mı yoksa oyuncunun mu kazandığını belirlemeniz gerekiyor. Projeyi yaparken yardımcı fonsiyonlar yazmanızı şiddetle öneriyoruz. (Başlangıç için her adımı bir fonksiyon olarak tanımlamaya çalışmak faydalı olabilir. Ancak tabii ki sizin programınız sizin dünyanız, ihtiyaç duyduğunuz şekilde kodunuzu yazmakta özgürsünüz!) Hadi başlayalım!

Proje Adımları

1. Oyuncunun İsminin Alınması

Oyun boyunca oyunu oynayan kullanıcıya ismiyle sesleneceğiz. Bunu yapmak için de öncelikle oyuncudan ismini almalı, daha sonra ekrana yazdırmalıyız. Örnek olarak, kodunuzu çalıştırdığınızda şu şekilde görünebilir:

Merhaba, ben Havalı! Taş, kağıt, makas oyununa hoşgeldin.
Adını öğrenebilir miyim?: Yekta
Merhaba Yekta, Hadi oyuna başlayalım!

2. Oyuncunun Seçim Yapması

Bu aşamada bir tur için oyuncudan taş, kağıt, makas arasından birini seçmesini isteyeceğiz ve bu seçeneğini daha sonra kimin kazanacağını belirlemek üzere bir değişkende tutatacağız. Örneğin:

Taş, Kağıt, Makas?: Taş

3. Tur Sonucunu Belirleme

Her tur için Havalı’nın yaptığı seçimle oyuncunun seçimi karşılaştırıp sonucu belirleyeceğiz. Havalı’nın yaptığı seçim rasgele olacak şekilde sizin için yazdık. Size verdiğimiz Havalı’nın seçimini kullanarak yukarıda verdiğimiz koşullara göre turu kimin kazandığını belirlemeniz gerekiyor. Turun kazananını belirledikten sonra oyuncuya kimin kazandığını söyleyeceğiz. Turun sonuçları 3 farklı şekilde olabilir:

  • Havalı kazanabilir,
  • Oyuncu kazanabilir,
  • Berabere kalabilir.

Örnek olarak kodunuz şu şekilde çalışabilir:

Taş, Kağıt, Makas?: Taş
Yekta kaybetti, Havalı Kağıt dedi.

4. Oyun Döngüsü

Tebrikler, her tur için oyunu yazmayı başardınız. Şimdi gelin oyun döngüsünü tamamlayalım. Bu oyunu size verilen tur_sayisi değişkeni kadar turdan oluşuyor. Bu aşamada 1 tur için yazdığınız oyuncu seçimini alma ve sonucu kontrol etme aşamalarını bir döngü içerisinde tur_sayisi kadar tekrarlamanız gerekiyor. Ayrıca her turun sonucunu veya skorları oyunun kazanananı belirlemek için farklı değişkenlerde tutmalıyız, bir değişken Havalı’nın başka bir değişken de oyuncunun kazandığı toplam tur sayısını tutabilir. İsterseniz beraberlikleri de bir değişkenle tutabilirsiniz.

Örneğin kodunuz şu şekilde çalışabilir:

Taş, Kağıt, Makas?: Makas
Yekta kaybetti! Havalı Taş dedi.
Taş, Kağıt, Makas?: Kağıt
Berabere! Havalı Kağıt dedi.
Taş, Kağıt, Makas?: Taş
Yekta kazandı! Havalı Makas dedi.

Bu bölümü bir adım ileriye taşımak için tur_sayisi değişkenini oyunun başında sorarak oyuncuya oynamak istediği tur sayısını sorabilirsiniz.

5. Oyunu Kazananı Belirleme

Artık oyunun kazananını ilan etme vakti! Son aşamada, her tur için kimin kazandığına ilişkin tuttuğunuz değişkenleri karşılaştırmalı ve oyunun sonucunu belirleyeceğiz. Daha sonra sonucu Havalı oyunun sonucunu oyuncuya söyleyecek. Oyunun sonucu 3 farklı şekilde olabilir:

  • Havalı kazanabilir,
  • Oyuncu kazanabilir,
  • Berabere kalabilir.

Örneğin kodunuz şu şekilde çalışabilir:

Tebrikler Yekta, beni yendin!
Ben kazandım! Güzel oyundu.
Berabere Kaldık!

Bu bölümü bir adım ileriye taşımak için iki tarafın da kaç tur kazandığını konsola yazdırabilirsiniz.
Tebrikler, artık bilgisayar Havalı’ya karşı taş kağıt makas oynayabiliriz! İyi olan kazansın!

Örnek Çalışma Şekilleri

Merhaba, ben Havalı! Taş, kağıt, makas oyununa hoşgeldin.
Adını öğrenebilir miyim?: Yekta
Merhaba Yekta, Hadi oyuna başlayalım!

Taş, Kağıt, Makas?: Taş
Yekta kazandı! Havalı Makas dedi.
Taş, Kağıt, Makas?: Kağıt
Berabere! Havalı Kağıt dedi.
Taş, Kağıt, Makas?: Taş
Yekta kazandı! Havalı Makas dedi.

Tebrikler Yekta, beni yendin!
Merhaba, ben Havalı! Taş, kağıt, makas oyununa hoşgeldin.
Adını öğrenebilir miyim?: Yekta
Merhaba Hasan, Hadi oyuna başlayalım!

Taş, Kağıt, Makas?: Kağıt
Hasan kaybetti! Havalı Taş dedi.
Taş, Kağıt, Makas?: Kağıt
Berabere! Havalı Kağıt dedi.
Taş, Kağıt, Makas?: Taş
Hasan kazandı! Havalı Makas dedi.

Berabere Kaldık!
Merhaba, ben Havalı! Taş, kağıt, makas oyununa hoşgeldin.
Adını öğrenebilir miyim?: Yekta
Merhaba Yekta, Hadi oyuna başlayalım!

Taş, Kağıt, Makas?: Makas
Yekta kaybetti! Havalı Taş dedi.
Taş, Kağıt, Makas?: Kağıt
Yekta kaybetti! Havalı Makas dedi.
Taş, Kağıt, Makas?: Taş
Yekta kazandı! Havalı Makas dedi.

Ben kazandım! Güzel oyundu.