Giter Site home page Giter Site logo

javalabra's People

Watchers

 avatar

javalabra's Issues

Koodikatselmointi 1

(Projekti ladattu su 14.4. 12:18)

Puuttuvan kirjaston (Cobertura) takia en voinut ajaa enkä testata projektia, koska tarvittavan kirjaston puuttuessa koodi ei tietenkään käänny. Lienee taas sellainen ongelma, joka olisi ratkennut koulun koneelta ajaessa, mutta valitettavasti en ehtinyt käydä tekemässä tätä koululla joten voin arvostella nyt vain koodin siisteyttä ja selkeyttä. Saat siis vähän vajavaisen katselmoinnin tällä kertaa, valitettavasti. Pahoittelut tästä.

  • Luokkia on todella paljon, joten toteutuksen seuraaminen on tavallaan hankalaa. Kuitenkin luokat ovat sisäisesti loogisia ja helposti ymmärrettäviä, ja ne on kommentoitu ensiluokkaisesti.
  • Poikkeuksia on käytetty hyvin ja käsitelty kattavasti. Välillä tuli mieleen, että jos antaa ihmispelaajalle hieman vähemmän vapautta - esim. komento on valittava käyttiksessä annetuista nappuloista, tms - niin voisi päästä hieman vähemmällä poikkeuksien käsittelyllä. Tietysti tästä on taas hankala sanoa mitään kun en onnistunut tuota ohjelmaa ajamaan, mutta jotenkin vaikuttaa ettet käytä graafista käyttistä hyväksesi ihan niin paljon kuin voisi. Ehkä tätä voisi ajatella hieman enemmän?
  • Kieliominaisuus on mielenkiintoinen, enpä olisi itse tullut ajatelleeksi. Se monimutkaistaa asioita mutta on kaikean kaikkiaan integroitu loppuohjelmaan hyvin
  • Poikkeusluokista puuttuu vielä luokan kuvaus. OmistajaOnJoAsetettu sisältää myöskin kirjoitusvirheen poikkeuksen viestissä :)
  • Rajapinnat ovat siistejä, käytännöllisiä ja pätevästi implementoituja.
  • Parissakin luokassa on static final inttejä, jotka ehkä paremmin sopisivat omiksi enumeikseen, kuten Komentotyyppi ja Ruutu, esimerkiksi liittyen tilakyselyyn. Tietysti tämä voi olla ihan makukysymys. Laivansijoittimessa static final intit voisi muuntaa yhdeksi booleaniksi, orientaatioita kun on vain kaksi, jolloin pääsisi eroon taas yhden poikkeuksen käsittelystä.
  • Olen samaa mieltä Piste-luokan toteutuksen kanssa siinä, että kaksi booleania toimii paremmin kuin enum. En tosin tiedä onko niiden julkisuus niin kauheasti tehokkaampaa kuin getterien ja setterien lisääminen, mutta eipä se taida haitatakaan.
  • En täysin saanut selvää Saannot-luokan varsinaisesta toiminnasta tai siitä, miksi kaikki luokan ominaisuudet tallennetaan yhdeksi listaksi, tai miksi laivojen pituudet ja määrät ovat TreeMapissa. Miksi esimerkiksi leveys ja korkeus eivät ole suoraan omia muuttujiaan, tai vuorojen määrä? Laivojen lisäys listaan on myös hieman hämmentävä. Ymmärsin kyllä niiden logiikan, mutta tapa tuntuu epäintuitiiviselta. Jos ne annetaan TreeMappina, miksei niitä pidetä edelleen TreeMappina? Lisäkommentointi olisi voinut olla avuksi.

Kaiken kaikkiaan selkeää koodia ja hyvin dokumentoitu projekti, joka näyttää olevan sopivan pitkällä ja ainakin silmämääräisesti toimii. Tämän enempää en sitten voikaan sanoa kun en saanut sitä ajettua, mutta ehkä näissäkin kommenteissa oli joku arvokas idean murunen?

Pelin loppuminen vaihtoehtoisilla säännöillä

Jos käytössä on säännöt jotka mahdollistavat uuden pelivuoron saamisen vastapelaajan laivaan osumisesta, ei peli pääty vielä siinä vaiheessa kun vastustajan kaikki laivat on upotettu, vaan vasta kun tämän jälkeen on vielä kerran ammuttu johonkin ruutuun. (Vuorohan jatkui osumasta.)

Tekoäly

Tekoälypelaaja ampuu tällä hetkellä satunnaisiin ruutuihin. Fiksumpi tekoäly tekisi pelistä mielekkäämmän.

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.