Git Product home page Git Product logo

rummy-ai's People

Contributors

nakkekakke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

rummy-ai's Issues

Vertaisarviointi 2

Repositorio kloonattu 28.9. klo. 15.50

Mielenkiintoinen aihe ja erittäin pätevä toteutus!

Määrittelydokumentti oli selkeä ja kattava. Suorituksen aikaiset konsolikäyttöliittymän ohjeet olivat myös hyvät.

PvP-pelistä oli tosin ohje, että ei kannata yrittää, mutta se vaikutti pikaisella testauksella kuitenkin toimivan.

Tekoälyn "ajatteluajan" vois tarkentaa tarkoittavan (ymmärtääkseni) sitä lukumäärää, montako kertaa ISMCTS-algoritmi suorittaa vuorolla, montako simulaatiota pelin tilanteesta ja päätöstä parhaalta vaikuttavista siirroista tehdään tms. Ennen koodin tarkastelua ajattelin, että aika tarkoittaa varmaan esim. millisekunteja.

Koodi on selkeää: muuttujat ja metodit on hyvin nimetty, ja vastuualueet eroteltu pääosin hyvin eri luokille ja metodeille. State-luokan findPossibleMelds() kohdalla voisi päätellä pituuden lisäksi myös metodin sisäisen kommentoinnin määrästä, että sitä voisi refaktoroida useammaksi metodiksi.

Kommentoitua debug-loggailu-koodia löytyy hieman luokista PlayGame ja ISMCTS. Mikäli loggailua vielä todennäköisesti tarvitaan, niin ei siinä mitään. Pisteet siitäkin, että mitän muuta mahdollisesti ylimääräistä en löytänytkään.

PvP-pelin logiikan voisi myös refaktoroida AIvsAI-pelin tavoin omaksi luokakseen. Layoff-loopin sisällä myös sisennyksen syvyys kasvaa aika suureksi.

Hakemistorakenne on pääosin erinomainen, mutta siltä osin vähän hankala, että pääohjelmaa ei ole sijoitettu ja nimetty kaikkein tavanomaisemmin. Voisi myös ehkä harkita, tarvitaanko sekä game-, että ui-kansiot, vai voisiko niiden sisältämät luokat laittaa saman hakemiston alle.

Mukavaa loppukurssia!

Vertaisarviointi

Date: 25.8. 11:22

Vertaisarviointi

Ehdotuksia luokkiin

Player

Player luokassa on toinen konstruktori cloonaamista varten, mikä on ihan ok. Tietääkseni olisi kuitenkin mahdollista overridata clone metodi luokalle. Clone metodin käyttö olisi ehkä intuitiivisempi ja tutumpi koodatessa.

RunMeld / SetMeld

RunMeld ja SetMeld luokissa metodi layoff vaatii oikein toimiakseen että layOffAllowed metodia käytetään ensin tarkistamiseen. Tässä tapauksessa layoff metodi voisi ihan hyvin käyttää sitä sisäisesti, sillä ei pitäisi olla mitään tilannetta missä kyseinen toiminnallisuus ei olisi haluttua.

RunMeld ja SetMeld luokissa on melkein copioitu copy metodi. Vaihtoehtoisesti voisi pistää Meld superclassiin copyCards metodin, johon laittaa copy paste koodi, ja laittaa copy metodiin vain jäljellä oleva yksi rivi. Toisaalta metodi on muutenkin vain 3 riviä, joten muokkaaminen voisi olla turhaa.

Move

Luokan tekeminen jokaiselle erilliselle siirrolle vaikuttaa hieman oudolta. En ole täysin varma miksi juuri näin on tehty, ehkä siirtojen vertaamiseen toisiinsa, mutta luulisi olevan mahdollista yhdistää erilliset siirto luokat yhteen yksittäiseen luokkaan. Tällainen muutos johtaisi ainakin omasta mielestäni puhtaampaan koodiin.

ISMCTS

Kyseisen luokan metodi run on erittäin pitkä. Vaikka lisätyt kommentit auttavat koodin luettavuudessa, olisi kyseisen metodin refaktorointi useampaan pienempään metodiin merkittävä parannus.

Muuta

Hieman outoa että peliä pelatessa ei ole Player vs AI vaihtoehtoa. Ilman tätä vaihtoehtoa on vaikea saada kunnollista tuntumaa siihen miten AI toimii käytännössä, varsinkin kun AI vs AI versio on hyvin epäselvä.

Huomasin että jossain kohdissa koodia oli suhteellisen pitkiä rivejä koodia, joita olisi voinut jakaa useammille riveille. Tämä auttaisi koodin lukemista myöhemmin.

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.