You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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 ajettava chmod +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 :)
The text was updated successfully, but these errors were encountered:
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
Hyödyllisiä mainintoja. Näiden muuttaminen tulee varmasti parantamaan koodin luettavuutta!
minimaxin implementointi voisi olla lähempänä pseudokoodia; minimaxin tunteva ymmärtäisi toiminnan helpommin.
No riippuu tietenkin mitä pseudokoodia katselee...
Syvyyden 3 minimax ei ole vielä erityisen tehokas. Syvyysluokissa noin 7 on vielä heikko pelaaja, kymmenen toisella puolen hyvä, ja >20 maailmanluokkaa.
Shakissa tuolla syvyydellä voisi yhden siirron keksimiseen kulua esim. 30 ^7 = 27_512_614_111 verran aikaa...
Tai 31^20 = 67_179_000_000_000_000_000_000_000_000 verran....
Loppuu tietokoneelta puhti kesken...
minimax kahdella i:llä, heuristiikka i:llä ja eksponentiaalinen k:lla. Pahoittelut mutta nämä aina särähtää isosti :)
Heuristiikka, eksponentiaalinen olivat hyviä huomautuksia! Mutta MinMax on mielestäni hyväksytty kirjoitustapa, Wikipediasta:
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:
./gradlew build
: a on ajettavachmod +x gradlew
koodaustapa:
algot:
pilkunviilausta:
The text was updated successfully, but these errors were encountered: