Résumé Le jeu d`échec développe la capacité de décider

advertisement
Résumé
Le jeu d’échec développe la capacité de décider rapidement et correctement, de développer
des stratégies et de résoudre des problèmes. Les personnes qui jouent au jeu d’échec
surmontent facilement les problèmes de décision qu’il rencontre plusieurs fois dans leur vie
quotidienne et de résolution de ces problèmes. C’est pour cette raison que depuis presque
4000 ans, le jeu d’échec se joue et n’a perdu en aucune époque sa popularité.
Lorsque nous regardons du passé jusqu’à nos jours, nous constatons que les jeux vidéo et la
technologie utilisé s’est développé rapidement. Les personnes possèdent plusieurs raison de
jouer des jeux vidéo. En général c’est pour un but de divertissement. Cependant, la raison la
plus fréquente est l’instinct des personnes de vaincre les ordinateurs
La popularité et les influences du jeu d’échec a mené au transfert du jeu d’échec dans
l’environnement électronique et au résultat de à l’application des algorithmes d’intelligence
artificielle.
Dans ce projet nous avons recherché une réponse à la question « Est-ce que l’on peut
programmer un jeu d’échec et son intelligence artificielle où des mouvements logique dont
des règles parfaites sont déterminés sont possible et qui fonctionne sur un PC standard? »
D’abord une recherche sur le jeu d’échec et la programmation du jeu a été faite.
L’implémentation a été réalisée après avoir fait un plan résultant de ce travail. Ensuite,
l’intelligence artificielle préparé par Onur Büyüktopaç a été intégré et des solutions ont été
trouvé pour les problèmes rencontré afin d’appliquer un jeu d’échec effectif.
Özet
Bulunan tarihi ve arkeolojik kanıtlara göre, satranç oyununun en az 4000 yıllık geçmişi
olduğu tespit edilse de elde edilen yazılı belgelere göre yaklaşık olarak 17 yüzyıldır dünya
üzerinde oynanmaktadır. Hiç şüphesiz, popülaritesini hiçbir zaman yitirmeyen bir strateji
oyunu olmuştur.
Başta askerlerini savaş stratejileri konusunda eğitmek ve aynı zamanda eğlendirmek amacıyla
Hindistan’da oynanmaya başlanan ve “Çaturanga” olan adlandırılan satranç oyunu daha sonra
İran, Çin, Orta Doğu Endülüs Emevileri, İtalya derken tüm Dünya’da oynanmaya
başlanmıştır.
Satranç oyunu çok fazla varyasyonların olduğu her şeyiyle dört dörtlük bir strateji oyunudur.
Bu sebepten dolayı oyunun insanların gelişimi üzerine etkilerini incelemek amacıyla bir çok
bilimsel çalışma yapılmıştır. Satranç oynayan kişilerin okuma yetenekleri incelendiği zaman ;
oyunu oynamayan kişilerin okuma yetenekleri yıl sonunda
kişilerin okuma yeteneği
artarken, satranç oynayan
ilerlemiştir. Bunların yanı sıra; planlı hareket etmenin önemini
ve gerekliliğini kavramasını sağlar, süratli ve doğru düşünebilmeye yardımcı olur, olaylar
üzerine doğru yorumlar yapabilme yeteneklerini geliştirir, kişinin kendi güç ve yeteneklerini
daha iyi tanımasını sağlayarak, bireysel güç ve yeteneklerini açığa çıkarmasına ve bireysel
doğru kararlar alabilmesine yardımcı olur, dikkatini tek konu üzerinde yoğunlaştırabilme
alışkanlığını sağlar.
18. yüzyıla kadar hep gerçek oyun tahtası üzerinde oynanmakta olan satranç oyunu gelişen
teknolojiye paralel olarak oynayan kişi sayınının fazlalığı ve buna karşılık insanların yeterince
güçlü rakipler bulamamasından yola çıkarak oyun makineler üzerine taşınmıştır. İlk satranç
oynayan bilgisayar 1915 yılında yapılmıştır. Sadece belirli oyun sonlarını yapabilmektedir.
Satranç – Bilgisayar etkileşimi 20. yüzyılın başlarında başlamış olsa da tam elektronik
cihazlar üretilmesi ve algoritmaların tasarlanıp uygulanması 20. yüzyılın ortalarına kadar
gelinmesine sebep olmuştur. Doğru ve mantıklı bir şekilde satranç oynayan ilk bilgisayar
programı 1958-1959 arasında yapılan The Bernstein Chess Programdır. Massachusetts
Institute of Technology (MIT) ile IBM ortaklığı ile yapılan bu program Alex Bernstein ve ekip
arkadaşları Michael Roberts, Thomas Arbuckly ve Martin Belsky tarafından programlamış,
satranç konusunda da IBM'in 1957 yılında işe aldığı grandmaster Arthur Bisguier'a
danışılmıştır.
20. yüzyılın 2. yarısında hızla gelişen teknoloji ile daha güçlü ve küçük boyutlarda
bilgisayarlar üretilip bunlar üzerinde çalışan programlama dilinin oluşturulması ile
bilgisayarlar üzerinde oynanan satranç oyunlarını da çok etkilemiştir.
Satranç oyununu programlayabilmek oyunun yapısından dolayı oldukça zordur. Bu
karmaşıklık sebebiyle yazılan programlar performanslı çalışmamakla birlikte yönetimi de
oldukça zordur. 1960’lı yıllarda bu tip karmaşıklıkları gidermek amacıyla Nesne Yönelimli
Programlama (OOP) adında yeni bir bilgisayar programlama yaklaşımı çıkarılmıştır. Bu OOP
ile birlikte gelen modüler yapı oluşturabilme, çok biçimlilik ve kalıtım gibi özellikler ile
satranç oyunu programlama daha sistematik ve kontrol edilebilir olmuştur. Bunun yanı sıra
modüler bir yapıya kavuşan oyun üzerinde optimizasyonlar hızlı bir şekilde yapılabilmektedir
ve böylece satranç oyunları daha performanslı çalışmaya başlamıştır.
Satranç – Bilgisayar etkileşiminin sağlandığı en ünlü çalışma IBM tarafından satranç
oynaması için geliştirilen Deep Blue isimli süper bilgisayarın 1993 - 2000 yılları dünya
satranç şampiyonu Garry Kasparov'la yaptığı karşılaşmadır. Mayıs 1997 tarihinde gerçekleşen
6 oyunluk bu karşılaşma
⁄ -
⁄ sonuçla Deep Blue'nun kazanmasıyla sonuçlanmıştır.
Bu yazılım, IBM firmasının RS/6000 serisi süper bilgisayarındaki 128 adet işlemciyi paralel
olarak çalışmaktadır.
Hiçbir satranç ustası tarafından yenilemeyecek bir uygulama için gerekli olan arama
algoritmaları bulunmasına rağmen, şuana kadar hiçbir satranç oyunu yenilemez olmamıştır.
Satranç uygulamalarının “Salt Güç” modeli kullanılarak yapılmasıdır. Aslında bu model ile
kesin sonuçlar bulunabilmektedir. Ancak şuanda dünya üzerinde var olan bilgisayar
teknolojisinin işlem gücü bu sonuca ulaşamamaktadır. Çünkü satranç oyununda belirli bir
anda ortalama olarak
olası hamle mevcuttur. Bu sayı şuanda dünyadaki süper
bilgisayarların hesap kapasitesinin çok üzerindedir. Bu yüzden alfa-beta, quiescent gibi seçici
arama algoritmaları geliştirilmiştir.
Yapılan çalışmalar ve elde edilen sonuçlar Galatasaray Üniversitesi Bilgisayar Mühendisliği
dördüncü sınıf öğrencilerinden Onur Büyüktopaç ile bizim ilgimizi çekti ve şu soruyu
yanıtlamaya çalıştık: "Standart bir PC üzerinde çalışabilen, kusursuz olarak kurallarının
tanımlandığı ve mantıklı hareketler yapabilen bir satranç oyunu ve yapay zekası
programlanabilir mi?". Bu problematik ışığında çalışmalarımızı ikiye böldük: Yapay zeka
algoritmalarının satranç oyunu üzerinde düzgün çalışabilmesi için öncelikle kusursuz olarak
kuralların tanımlanmış olması gerekmektedir. Bunun yanında oyunun insan ile etkileşimini
sağlamak için amacıyla yapay zekanın herhangi bir satranç oyuncusunun anlayabileceği
görsel çıktılar vermesi, oyuncunun da hamlesini yapay zekaya iletebilmesi gerekmektedir.
Bunun yanı sıra oynayan için de sade ve güzel bir görselinin olması gerekmektedir. Bu
sorunlara çözüm bulabilmek amacıyla Galatasaray Üniversitesi Bilgisayar Mühendisliği
Lisans Bölümü Bitirme Projesi için “Satranç oyunu programının görsel kısmının yazılması”
konusu seçilmiştir. Bunun yanı sıra video oyun programcılığının sağladığı farklı disiplinler ile
çalışma imkanı sağlaması, yapay zekâ çalışmalarının yürütüldüğü en aktif ve güncel bir kolu
düşünme kabiliyeti gerektiren satranç, dama, go gibi zekâ oyunlardan biri olması bu konunun
seçiminde etkili olan başka bir sebeptir.
Bu projeye başlamadan önce genel olarak satranç oyununu ve oyun programcılığı
araştılmıştır. Satranç oyununun ve oyun programcılığının tarihsel gelişimini inceledikten
sonra kusursuz çalışan bir sistem yapabilmek hedeflendiğinden dolayı oyunun kuralları ve
taşların hareket yetenekleri benimsendi.
Projenin ikinci bölümüne, « bir bilgisayar oyunu nasıl yapılır ve ne tür gereksinimlere ihtiyaç
vardır ? » sorularına cevap bularak başlanmıştır. Projeye başlamadan önce oyunu yapmak için
gerekli olan oyun gereksinimleri belirlenmiştir. Bunlar belirlendikten sonra disiplinli ve
düzgün ilerleme kaydedebilmek için oyun tasarım planı çıkartıldı. Oyunu oynayacak oyuncu
profillerini tanımlanmıştır ve en son kullanılacak grafiklerin tasarımları yapılmıştır. Daha
sonra oyunu programlaması için tercih edilen Microsoft .NET Framework platformu, nesne
yönelimli programlama mantığı, csharp programlama dili ve oyunu programlamak için
kullanılan kütüphaneler analiz edildi. Plan çıkarılıp, akış diyagramlarını çizilip, platform ve
programlama dili belirlendikten sonra oyun adım adım programlanmaya başlanmıştır. Daha
sonra taşların tanımlanma şekilleri, taşların hareketlerinin uygulanması, satranç oyununun
kurallarının algoritmanlarının yazılması, oyun grafiklerinin içerik olarak tanımlanması, ara
yüzün tasarlanması ve oyuncuların taşları hareket ettirme şekillerinin belirlenmesi kısımları
yapılmıştır. Bunun yanı sıra programlama sırasında karşılaşılan zorluklar ve problemler
inceledikten sonra, bunların nasıl çözüldüğü incelenmiştir. Bunların yanı sıra oyunu yapay
zekaya karşı oynayabilmek için Onur Büyüktopaç’ın yazdığı satranç oyunu yapay zekası
kullanılmıştır. O.Büyüktopaç’ın hazırladığı yapay zeka ile satranç oyununun iletişimi
sağlaması amacıyla yapılan çalışmalara bu raporda yer verilmiştir.
Download