KA0Sgames / TiraHarkka-Go-game

TiraHarkka: Go game
0 stars 0 forks source link

Vertaisarviointi #1

Open leopekkas opened 2 years ago

leopekkas commented 2 years ago

Lataaminen ja rakentaminen

Latasin projektin 16/08 n. klo 18:00.

Projektin rakentamisessa oli hieman ongelmia, en ehtinyt perehtyä ongelmaan sen tarkemmin, joten päädyin vain poistamaan GoPeli/config/checkstyle kansiosta checkstyle.xml tiedostosta rivit 9-11:

<module name="SuppressionFilter">
    <property name="file" value="skipped_files.xml" />
</module>

Jonka avulla ohjelma kääntyi normaalisti.

Testikattavuus, checkstyle

Ajoin testit, katsoin checkstyle- ja jacocon testireportit. Projektin testaus on kattava ja yksityiskohtainen, hyvää työtä!
Checkstylen kommentit taas ovat itsensä selittäviä, en niitä avaa tässä sen enempää, omasta mielestäni koodi on rakenteeltaan selkeää ja koodin kommentointi hyvälaatuista.

Projekti on aihealueeltaan monimutkainen ja laaja-alainen, mutta modulaarisuus luokkien ja kokonaisuuksien hyödyntämisessä auttaa koodikatselmoijaa saamaan aiheesta hyvän kuvan. Ongelma-alueen jakamisesta loogisiin ja pieniin kokonaisuuksiin siis erityistä plussaa! Luokat, metodit ja muuttujat nimetty selkeästi.

Pieniä parannuskohteita

Jos jotain parannettavaa pitäisi keksiä, niin esim. Pelitilanne-luokan funktio lisaaSiirto() on toisteinen ja voisi hyötyä sen jakamisesta pää- ja apufunktioihin (mitä vaikuttaa olevan jo itseasiassa tehty hieman).
Sama ehdotus Pelilauta luokan lisaaSiirto-funktioon.

Harmiksi itse toiminnallisuutta tai käyttöliittymän suunnittelua en päässyt juurikaan testaamaan, mutta itse koodi vaikuttaa hyvin suunnitellulta ja testatulta, tsemppiä käyttöliittymän ja tekoälyn suunnittelemiseen!

KA0Sgames commented 2 years ago

Kiitos palautteesta.

Itse en ole saanut checkstyleä toimimaan. Koitin tuota muokkausta, mutta saan silti build failuren kun yritän ajaa checkstyle komentoa (tarkalleen checkstyleMain). Classpathissa mahdollisesti jotain vikaa. Tämä saattanee liittyä siihenkin, että en saanut suhteellisia tiedostopolkuja toimimaan, vaan jouduin käyttämään absoluuttisia tiedostopolkuja ohjelman käyttöliittymässä kuvien hakemisessa.

Noita lisaaSiirto()-metodien toteutusta pitää pohtia vielä. Hirveän moneen metodikutsuun en niitä mielellään pilkkoisi, sillä ymmärtääkseni varsinkin Javassa metodikutsu on suhteellisen raskas operaatio. Tästä ei ihmisen pelaamia siirtoja lisätessä ole haittaa. Kuitenkin tekoälyn kohdalla, kun se generoi hakupuuta, niin näitä metodeita kutsutaan aina kun testataan onko pelattu siirto laillinen. Tämä tarkoittaa satoja tai tuhansia kertoja yhtä siirtoa valitessa. Monte Carlo hakupuun generoivalla algoritmilla on kiinnitetty aika, jonka ajan algoritmia ajetaan ja kun aika loppuu, valitaan siihenmennessä paras siirto (siirto jota on simuloitu eniten).

Lisäksi minulla on ajanhallinnallinen ongelma, olen pahasti myöhässä aikataulusta, kun en ole vielä kerennyt edes aloittamaan tekoälyn toteuttamista. Tästä syystä voi olla, että pohdinta noiden ko. metodien suhteen jää kurssin jälkeen tehtäväksi. Olen suunnitellut toteuttaa ohjelmasta laajennetun version harrastusprojektina, kun pääsen nikkaroimaan ilman aikataulullisia rajoitteita. Tähän liittyy mahdollisuus valita molempien pelaajien kohdalle ihmis/tekoälypelaaja, pelilautakoon valinta, sekä koneoppimista hyödyntävä tekoäly.