Hazırlayan: Danielle Kain and Chris Piech
Çeviren: Gül Sena Altıntaş
Worked Examples:
E=MC2,
Fibbonacci
File: nimm.py
Nimm "almak" anlamına gelen eski bir Almanca kelimenin ardından isimlendirilmiş antik bir strateji oyunudur. Batı Afrika'da Tiouk Tiouk ve Çin'de Tsynshidzi olarak da adlandırılır. Oyuncular ortada hiç taş kalmayana kadar sırayla ortadan taş alırlar. Nimm oyunu şu şekilde ilerler:
Oyun ortada 20 taşla başlar
İki oyuncu sırayla hamle yapar
Ortadan son taş alan oyuncu oyunu kaybeder. Aşağıda örnek bir oyunun işleyişini görebilirsiniz:
Ortada 20 taş kaldı
Oyuncu 1, ortadan 1 mi 2 taş mı almak istersiniz? 2
Ortada 18 taş kaldı
Oyuncu 2, ortadan 1 mi 2 taş mı almak istersiniz? 2
Ortada 16 taş kaldı
Oyuncu 1, ortadan 1 mi 2 taş mı almak istersiniz? 1
Ortada 15 taş kaldı
Oyuncu 2, ortadan 1 mi 2 taş mı almak istersiniz? 2
Ortada 13 taş kaldı
Oyuncu 1, ortadan 1 mi 2 taş mı almak istersiniz? 2
Ortada 11 taş kaldı
Oyuncu 2, ortadan 1 mi 2 taş mı almak istersiniz? 1
Ortada 10 taş kaldı
Oyuncu 1, ortadan 1 mi 2 taş mı almak istersiniz? 2
Ortada 8 taş kaldı
Oyuncu 2, ortadan 1 mi 2 taş mı almak istersiniz? -1
Please enter 1 or 2: 2
Ortada 6 taş kaldı
Oyuncu 1, ortadan 1 mi 2 taş mı almak istersiniz? 2
Ortada 4 taş kaldı
Oyuncu 2, ortadan 1 mi 2 taş mı almak istersiniz? 2
Ortada 2 taş kaldı
Oyuncu 1, ortadan 1 mi 2 taş mı almak istersiniz? 1
Ortada 1 taş kaldı
Oyuncu 2, ortadan 1 mi 2 taş mı almak istersiniz? 1
Oyuncu 1, kazandı!
Nimm oynamak için bir program yazın. İşinizi kolaylaştırmak için problemi daha küçük aşamalara ayırdık. Bu problemi çözmek için çok zamanınız var. Probleme yavaşça, parça parça yaklaşmaya çalışın.
20 taşla başlayın. Ortadan taş alma işlemini ve ortada kalan toplam taş sayısını hiç taş kalmayana kadar tekrarlayın. Hangi oyuncunun sırası olduğuyla ilgili endişelenmeyin. Bu aşamada ortadan bir ya da iki taş alındığını kontrol etmenize de gerek yok. input(mesaj)
fonksiyonunu kullanın, unutmayın bu fonksiyon mesaj
ı yazdırıp kullanıcının konsola bir şey girmesini bekler.
Ortada 20 taş kaldı
Ortadan 1 mi 2 taş mı almak istersiniz? 2
Ortada 18 taş kaldı
Ortadan 1 mi 2 taş mı almak istersiniz? 17
Ortada 1 taş kaldı
Ortadan 1 mi 2 taş mı almak istersiniz? 3
Oyunu kaybettiniz
Hangi oyuncunun sırası olduğunu takip etmek için bir integer (tamsayı) değişkeni oluşturun (unutmayın, toplamda iki oyuncu var). Kullanıcıya hangi oyuncunun sırası olduğunu söyleyin. Ortadan taş alındığında kullanıcı sayısını değiştirin.
Ortada 20 taş kaldı
Oyuncu 1, ortadan 1 mi 2 taş mı almak istersiniz? 1
Ortada 19 taş kaldı
Oyuncu 2, ortadan 1 mi 2 taş mı almak istersiniz? 1
Ortada 18 taş kaldı
Oyuncu 1, ortadan 1 mi 2 taş mı almak istersiniz? 17
Ortada 1 taş kaldı
Oyuncu 2, ortadan 1 mi 2 taş mı almak istersiniz? 1
Oyunu kaybettiniz
Her turda sadece bir ya da iki taşın alındığından emin olun. Kullanıcıdan kaç taş almak istediklerini (kullanıcı girdisi) okuduktan sonra taş sayısının geçerli olup olmadığını kontrol etmek ve kullanıcı geçerli bir değer girene kadar sormaya devam etmek için şu şekilde bir yapı kullanabilirsiniz:
while kullanici_girdisi gecersizken:
input = int(input("Lütfen 1 ya da 2 girin: "))
Kazanan oyuncuyu ilan edin.
Bir AI (Yapay Zeka) rakibi yazabilir misiniz? Her turda rastgele bir sayı oynayan bir AI ile başlayıp daha sonra daha stratejik hamleler yapan bir AI geliştirebilirsiniz...
Başka ilave edilebilecek fikirler: