Minimaks algoritmasına dayalı bir satranç oyun yazılımı
An application of artificial intelligence in game theory
Yazar: FEDAİ ŞEKERCİOĞLU
Danışman: YRD. DOÇ. DR. OSMAN HİLMİ KOÇAL
Yalova Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı
Derece: Yüksek Lisans, 2012
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: Bilgisayar destekli programlama = Computer aided programming

Özet:
Bu tez çalışmasında oyun teorisi uygulamalarından biri olan minimaks algoritması anlatılmış ve bu algoritmanın bir uygulaması yapılmıştır. Minimaks algoritmasının ne olduğu ve çalışma prensibi açıklanmıştır. Algoritmanın açıklanması oyun ağaçları kullanılarak yapılmıştır.Minimaks algoritmasının bir oyun programında nasıl kullanılacağının uygulaması anlatılmıştır. Bu algoritma uygulama olarak bir satranç programında kullanılmıştır. Program bilgisayara karşı satranç oynanırken, bilgisayarın yapacağı hamlenin belirlenmesini, minimaks algoritmasını kullanarak yapmaktadır. Programda kullanıcı beyaz taşlarla, bilgisayar ise siyah taşlarla oynamaktadır. Program satranç oyununun tüm kurallarını uygulamaktadır. Yazılan programda programlama dili olarak java kullanılmıştır.Tezin giriş kısmında satranç kuralları kısaca tanıtılmıştır. Ayrıca arama algoritmaları, oyun teorisi gibi yapay zeka konularından genel olarak bahsedilmiştir.Tezin ikinci bölümünde minimaks algoritmasının ne olduğu, çalışma prensibi, algoritma şeması anlatılmıştır. Algoritmanın nasıl değerlendirme yaptığı oyun ağacı kullanılarak gösterilmiştir. Oyunun değerlendirilmesinde iki adet değerlendirme kriteri kullanılmıştır. Taşların statik değerlendirilmesi, taşların türüne göre yapılmıştır. Oyunun dinamik değerlendirilmesi, taşların satranç tahtasında bulunduğu konuma göre yapılmıştır. Her olası hamle için taşların statik ve dinamik değerleri toplanarak minimaks algoritmasına gönderilmiştir. Minimaks algoritmasında yapılabilecek tüm olası hamleleri değerlendirdikten sonra bilgisayarın yapacağı en iyi hamle belirlenmektedir.Tezin üçüncü bölümünde oyunun programlanması anlatılmıştır. Kullanıcı arayüzü java'nın grafik kütüphanesi kullanılarak gerçekleştirilmiştir. Taşların hareketinde java animasyonu kullanılmıştır. Bu sayede satranç taşlarının hareketi bilgisayar faresi yardımı ile sürükle bırak yöntemi kullanılarak sağlanmıştır. Yanlış hamle yapıldığında, şah çekildiğinde ve oyun bittiğinde uyarı mesajları ekrana gelmektedir. Her taş çeşidi için bir metot yazılmıştır. Bu metotlarda ilgili taş türüne ait satranç kurallarının denetimi yapılmaktadır. Örneğin piyon metodunda; piyonun bir kare ileri hareketi, iki hamle ileri hareketi, sağında yada solunda rakip taş var ise bunu alması, geçerken alma kuralının uygulanması ve piyonun son yataya ulaştığında vezir olması gibi o taş ile ilgili tüm satranç kuralları denetlenmektedir. Bir hamle yapıldığında o taşın yapabileceği tüm geçerli hamleler kontrol edilmektedir. Ayrıca ses metodu eklenmiş; bu metotta yapılan her geçerli hamle sonrası uyarı verilmesi sağlanmaktadır. Dördüncü bölün sonuç bölümüdür.Bu tez çalışmasında önerilen satranç oyun algoritmasının başarısı, statik ve dinamik değerlendirmeler yapılan denemelerle test edilmiştir.Yapılan değerlendirmeler bu tez çalışmasına özgün olarak önerilen dinamik puanlandırma durumunda önemli performans artışı sağlamıştır.

Abstract:
In this thesis, minimax algorithm had been explained and an application had been applied using this algorithm. What is Minimax algorithm, discussed the operation principle. Explanation of the algorithm described by game trees. Minimax algorithm application is explained how to use this algorithm in a game program. This algorithm is used for chess program. Playing chess against the computer, the computer determines the move using minimax algorithm. Users play white pieces and computer plays the black pieces. This game to be written by java as the programming language.The rules of chess had been introduced briefly in the introduction. Search algorithms had been told in the introduction, generally referred to as artificial intelligence, such as game theory.What is the minimax algorithm? How is working operating prinsible? The algorithm of scheme had been told in second part of thesis. How the evaluation algorithm is shown through the game program. Evaluation criteria for the evaluation of the game is to use two. Static evaluation of the stones, the stones had been based on the type. Dynamic evaluation of the stones had been based to the location of the chessboard. Static and dynamic values of the stones collected for all possible moves and it had been sent to minimax algorithm. Minimaks algorithm, the computer will be be done the best move, after evaluating all posible moves is determined.How is written chess game? It had been told in the third part of thesis. The user interface is realized using Java graphics library. Movement of the stones used in the java animation. Movement of the pieces had been provided using drag and drop. Warning messages had been displayed when the king is pulled and the game is finished and wrong moves is made. Written to a method for each type of stone. These mehods are the rule of chess for the type of stone. For example the method of pawn, pawn square forward movement, the forward movement of the two moves, the right or left of the competitor to take this of opposite player have the stone, the implementationof the rule of en passant and pawn reaches the rank of the last, it can change type of stone. When it moves the stone, that all possible moves is controlledwith current moving. In addition, volume method was added to the warning given in this method provided after each valid moves.The fourth section had been section of result.In this thesis, the success of the proposed algorithm to the game of chess, in both static and dynamic evaluations of trials tested.Proposed in the original assessments made in this thesis has provided significant performance gains in case of dynamic grading.