Coder Social home page Coder Social logo

shakkialy's Introduction

Shakkialy

Ohjelma toteuttaa yksinkertaisen shakki tekoälyn. Tekoälyä vastaan voi pelata yksinkertaisen käyttöliittymän avulla, joka on toteutettu komentorivillä.

Käyttöohje

Luokalla "Play.java" voi pelata yksinkertaisessa käyttöliittymässä tietokonetta vastaan. Luokalla "ComputerVsComputer.java" voi katsoa kun algoritmi pelaa itseään vastaan.

Minimax

Toteutukseen käytetään minimax-algoritmia, jossa algoritmi hakee rekursiivisesti siirtoja luokitellen niiden arvon käyttäen nappuloiden arvoja (esim. hevonen = 3, sotilas = 1, … .) Sen toteutukseen tarvitsemma hakupuun tietorakenteeksi. Maksimoimme ja minimoimme vuorotellen siirtojen tuottaman arvon riippuen onko valkoisen vai mustan vuoro.

https://en.wikipedia.org/wiki/Minimax

Alpha-beta pruning

Prosessin avulla voimme minimoida haarojen lukumäärän. Jätämme käymättä kohdat, joissa löydämme siirron, joka tuottaa pienemmän arvon kuin jokin aiemmin löytämämme siirto.

https://en.wikipedia.org/wiki/Alpha–beta_pruning

shakkialy's People

Watchers

James Cloos avatar  avatar

shakkialy's Issues

Vertaispalaute

Arviointi tehty 11.10.2018 kello 19:54 ladatulle työlle.

Tekoäly pelaa (yhden) testauksen perusteella melko hyvin ihmistä vastaan ja rankaisee kyllä virheistä.

Projektin suorittamisen yhteydessä oli ongelmia, sillä oli haastavahkoa selvittää millä IDEllä ohjelma oli toteutettu. Tästä olisi hyvä olla maininta jossakin, tai vaihtoehtoisesti Java-projektin tapauksessa .jar-tiedosto voisi löytyä jostakin? Lopulta .gitignore paljasti kyseessä olevan IntellJ:n IDEA, mutta asennusongelmien vuoksi tiedostot tarvitsi manuaalisesti kopioida.

Myös testien ajossa oli joitakin ongelmia: Näytti siltä, että PerformanceTest luokka jäi jotenkin ikuiseen silmukkaan. Voi toki olla, että tämä oli ongelma, joka johtui tiedostojen manuaalisesta kopioinnista ja NetBeansista. Testausluokka GameTest ei nykyisellään toimi oikein, sillä move.isLegal() näyttäisi palauttavan aina true "oikeille siirroille" riippumatta pelaajan puolesta. Toisin sanoen pelaaja voi liikutella vastustajansa nappuloita.

Jos pelaaja valitsee värikseen mustan, niin pelaaja saa silti aloittavan vuoron tai peli skippaa siirron piirtämisen. Korjaukseksi tähän toiminee seuraava: new Game(color) on tehtävä vasta värin kysymisen jälkeen ja pelilauta tulisi piirtää vasta tietokoneen mahdollisen vuoron jälkeen.

Lisäksi laudan peilaus on nykyisellään hämmentävä: Toisin sanoen, kun pelaaja valitsee mustan värin, niin siirto b2 b3 tarkoittaakin b7 b6, toisin kuin laudan "koordinaatistosta" voisi päätellä.

Yleisesti ottaen projekti on hyvässä vaiheessa, loppuun vain pientä hiontaa vielä :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.