Git Product home page Git Product logo

path's People

Contributors

ktatu avatar

Watchers

 avatar

path's Issues

Vertaisarviointi

Projekti ladattu 23.08. joskus kello 11 aikoihin (unohdin kirjoittaa ylös, hups)

  • Plussaa fiksusti järjestetystä koodista, luokkia ja metodeja on helppo lukea kun ovat näin siistejä ja lyhyitä
  • Ohjelmaa suoritettaessa suurempikokoisilla kartoilla (kuten tuo battleground.map) kuva työntää ainakin tällaisella pienellä läppärin näytöllä algoritmin suorituksen tulokset niin alas että niitä on mahdotonta lukea, mikä on käytettävyyden kannalta hieman hankalaa. Harkitsisin tulosten sijoittamista vaikka kuvan viereen, kun näytöllä on kuitenkin enemmän horisontaalista tilaa käytettävissä.
  • PrioQueuessa on swap-metodeissa on jonkin verran toistoa jota olisi mahdollista vähentää. Esimerkiksi nullChildSwapia saisi hieman lyhyemmäksi jos erottaisi palautusarvon omaan muuttujaansa, jota sitten if-lauseissa muutettaisiin sopivaksi ja lopuksi palautettaisiin vain tuo muuttuja. Näin ei tarvittaisi tuota "else return -1;" joka välissä.
  • Algorithm-luokassa lukee kommentissa, että metodia initializeAlgorithm() ei ole tarkoitus ottaa lukuun algoritmin ajankäyttöä mitatessa. Se tulee kuitenkin nykyisellään mittauksiin mukaan, kun sitä kutsutaan metodin runAlgorithm() sisällä. Metodikutsun voisi mielestäni joko ottaa kokonaan pois algoritmin suorituksesta ja antaa ulkopuolisen luokan kutsua sitä (tyyliin dijkstra.initializeAlgorithm() jonka jälkeen dijkstra.runAlgorithm()) tai laittaa metodin privaatiksi jos mielestäsi on siistimpää pitää initialisaatio kokonaan algoritmin sisäisenä juttuna.

Vertaisarviointi #2

Ladattu 23:29 28.8.2020

Koodista yleisesti

Ohjelma on jaoteltu mallikkaasti omiin luokkiin, joita löytyykin paljon. Projekti alkaa näyttää jo valmiilta ja ominaisuuksia on runsaasti. Luokat ovat myös ytimekkäitä ja eivät sisällä turhia ominaisuuksia tai debuggaamisen jämiä. Kommentointi on vaihtelevan laajaa, mutta erityisesti algoritmiluokissa sitä kaipaisi enemmän. Algoritmien toteuttaminen abstraktin luokan perintää hyödyntäen on myös kiitosta ansaitsevaa. Luokkien ja muuttujien nimet ovat myös selkeitä ja helpottivat koodikatselmuksen tekemistä.

Käyttöliittymä

Käyttöliittymä on selkeä. Testaamista vaikeutti se, ettei karttoja ole mukana git repositoriossa, joten jouduin lataamaan niitä manuaalisesti. Nopeata testausta varten sovellus voisi ladata valmiiksi jonkin default kartan. Uniikkina ominaisuutena kuvan tallentaminen suoraan käyttöliittymästä, siitä plussaa!

Tietorakenteet

Kaikki tietorakenteet on toteutettu selkeästi, eikä niiden toteutuksesta löytynyt mitään kritisoitavaa.

Algoritmit

Algoritmit toimivat oikein. Hienoa, että olet implementoinut myös BFS:n.

Jump Point Search algoritmin kohdalla voisi prunedNeighbor metodin kutsusta poistaa isStartGrid boolean ja siirtää sen tarkastaminen vain metodin prunedNeighbor alkuun.

Lisäksi checkForcedHorizontal/Vertical/Diagonal metodeita voisi lyhentää tarkistamalla kuljettavuus suoraan suunnasta riippuen, täten voidaan poistaa if(directionX==1) tyyppiset ehtolausekkeet.
Tyyliin:
if ((!isPassable(y, x - 1) && isPassable(y + directionY, x - 1)) || (!isPassable(y, x + 1) && isPassable(y + directionY, x + 1))) {

Testit

Testit ovat laajat ja hyvin tehdyt. Erityisesti testien satunnaistaminen algoritmiluokissa on hienoa.
Ne myös menivät ajokerralla läpi. Suorituskykytestauksen implementoiminen graaffisena käyttöliittymänä on myös hienoa.
Hienoa, että implementoinut MovingAI:n tarjoamien benchmark skenaarioiden testaamisen.

Vakuuttavasti toteutettu ja ohjelmistokehityksen parhaita oppeja soveltaen tehty projekti. Hienoa työtä!

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.