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.