Skip to content

Koodikatselmointi #2

@korolainenriikka

Description

@korolainenriikka

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 :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions