-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Koodi oli yleisesti ottaen helposti luettavaa; luokkien vastuujako oli erityisen selkeä ja kokonaisuuden toiminnasta pääsi nopeasti kärryille. Ylipäätään projektista näkee, että siihen on nähty vaivaa ja koodin laatua on mietitty.
Korjaus / parannusehdotuksia:
dokumentaatio:
- Teen itsekin minimaxia ja itse löysin netistä sen tilavaativuudeksi O(bd), mutta toisaalta en itsekään osaa asiasta varmaksi sanoa.
- Testausdokumentissa on kehitettävää; testaustavan kuvaus on tällä hetkellä aika ympäripyöreä.
- Voisit mainita jossain, että itse tekemäsi osuus on pakkauksessa datastrctrproject ja loppu on kopioitua muulata.
- Voisit selittää mikä on siirto-luokassa käytetty siirron ylennys, sekä lyhyesti en passant- ja tornitussiirrot.
- Repon kopioija ei saa automaattisesti execute-oikeuksia, ohjeeseen voisi lisätä, että ennen
./gradlew build: a on ajettavachmod +x gradlew
koodaustapa:
- tornin ja lähetin siirtojen hakua olisi syytä yksinkertaistaa: esim. lähetille final int[][] suunnat = {{-1,-1},{-1,1},{1,-1},{1,1}} ja for suunta in suunnat kohde = new Ruutu(getX+suunta[0], getY+suunta[1])
- shakin alkutilaa kuvaava char[][] shakkitemplaatti voisi olla nimeltään alkutila tms
- minimaxin implementointi voisi olla lähempänä pseudokoodia; minimaxin tunteva ymmärtäisi toiminnan helpommin. Ainakin syvyyden voisi asettaa väheneväksi niin, että minimax-puun alin taso, jossa heuristinen evaluaatio tehdään, olisi taso 0, siis kutsu aina syvyys-1.
algot:
- Syvyyden 3 minimax ei ole vielä erityisen tehokas. Syvyysluokissa noin 7 on vielä heikko pelaaja, kymmenen toisella puolen hyvä, ja >20 maailmanluokkaa. Saisiko syvyyttä vielä nostettua jotenkin, oletko kokeillut syvempien hakujen kestoja? Itse löysin hyvää inspiraatiota täältä: https://www.youtube.com/watch?v=STjW3eH0Cik
pilkunviilausta:
- minimax kahdella i:llä, heuristiikka i:llä ja eksponentiaalinen k:lla. Pahoittelut mutta nämä aina särähtää isosti :)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels