Tic Tac Toe
Transkript
Tic Tac Toe
Tic Tac Toe ● ● ● ● Türkiyede SOS olarak bilinen oyun tarihin en eski oyunlarından biridir. Isa dan önce 100 civarında oynanmaya başlandığı düşünülür Nasıl oynandığına gelince bilindiği üzere taraflar sırasıyla seçtikleri işaretleri (x,s veya o ) kareler içine yerleştirirler. Bütün kareler dolduğunda satır veya sütunda yada çaprazda aynı harfleri bir araya getirmeyi başaran taraf kazanmış olur Tic Tac Toe ● ● ● Genel görüntüsü yandaki gibi olması planalanan oyunun kodu http://inventwithpython.com/tictacto e.py bağlantısından indirilebilir. Basitçe bir text editorü yardımıyla .py uzantılı bilgisayarımıza kayıt ettiğimiz kodu linux için terminale “ python3.4 tic_tac_toe.py ” yazarak çalıştırabiliriz. Python Idle kullanmayı sevenler adresdeki kodu idle da yeni dosya oluşturarak (file-> new file ) ve sonrasında bilgisayarda ki F5 tuşuna basarak çalıştırabilirler Tic Tac Toe ● ● ● Yan tarafta oyunun genel şemasını görmekteyiz Burada onemli olan unsurlardan birisi kodun oynayacakların sırasına göre planlanmış olması yani bilgisayar veya kullanıcı için farklı fonksiyonlar farklı kod akışı dizayn edilmiş olması. Bu durum yazılacak koda yani oyuna özgü bir durumdur. Tic Tac Toe ● ● ● ● ● ● Burada oyunun bilgisayar açısından nasıl oynanacağına (Algoritmasına) karar verdiğimiz kısımı ele alacağız haliyle buranın ne kadar iyi yazıldığı oyunun zorluğu ve kolaylığına etki edecektir.Şimdi srasıyla adımları inceleyelim... Brinci hamle kazanabilecek hamlemiz olup olmadığını kontrol ederek onu aramak. Birinci hamle yoksa karşıdakinin kazanmasını engelliyecek hamleyi yapmaktır. Ikinci hamle yoksa köşelerden birisini ele geçirmek önemlidir oyunda avantaj sağlamak adına. Üçüncü hamle imkanlı değilse yoksa merkezin kontrolunü ele geçirmek için kontrol etmektir. Eğer dördüncü hamlede yoksa kenarlardan birini elegeçirmek son seçenek olarak tanımlanır. Tic Tac Toe ● ● ● Oyuna başlarken random modülünü çağırıyoruz ki randint() fonksiyonunu kullanabilelim. Sonrasında tahtanın çizimini yapacak olan fonksiyonu tanımlıyoruz. Burada tanımladığımız def drawBoard(board) fonksiyonu board denilen string yani katar dizisi alır. Biz oluşturduğumuz bu dizi normalde 10 değer alırken çizimde 0 değer olmadığından endişeye gerek yok. Biz bunu 9 a kadar da tanımlayabilrdik ama bu diziler 0 dan başlamakta ve 9 adet olsaydı klavyeden 0 ın girilmesi gerekirdi e hoş olmazdı tabi Tic Tac Toe ● ● Oyuncunun X mi O mu olacağına karar verme ikinci tanımladığımız fonksiyon dikkat edilecek olursa klavyeden X veya O girilene kadar sorulmaya devam eden bir letter değişkeni tanımlanmış. Bu arada girilen değeri büyük harf değerine çevirmek için input().upper() fonksiyonunu kullandık. Sonrasında oyun ilk önce başlayacağına karar verecektir. Bunun için random fonksiyonundan faydalandık. Tic Tac Toe ● ● ● Oyuncunun tekrar oynamak isteyip istemediğini anlayan bu fonksiyon “y”harfi ile başlayan herhangi bir sey yazıldığında “yes” olarak kabul eder ve true döndürür Hamle yap fonksiyonu board, letter ve move paremetrelerini içerir. Move burada oyuncunun belirlediği sayıdır. Kazanan fonksiyonu kazanan string konbinasyonlarını çevirir. Böyle bir durumda true çevirir yani olumlu Tic Tac Toe ● ● ● Tahtanın kopyasını alan bu fonksiyon aslında Board listesinin verilerini kopyalar. Çağrıldığında dupeBoard[ ] dizisini doldurur. Sradaki basit fonksiyon hamlenin olanaklı olup olmadığını kontrol eder Oyuncun hamlesini edinen bu fonksiyon kendi içinde tanımlanan hamle boş iken ve hamle izinli iken hamle parametresini çevirir. Tic Tac Toe ● Hamle listesinden rastgele seçim yapan bu fonksiyon tahtamızı temsil eden board dizisini paremtre olarak alır. Fonksiyonumuzu algoritmamız içinde kullanacağız. Hamle listesinden (köşeler, kenarlar, kazananlar, engelleyenler) hamleye müsait olanları muhtemel hamleler arasına alıyor. Eğer açıkta hamle kalırsa içlerinden birini seçili hamle olarak tanımlıyor ve çeviriyor.