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.