javalabra's People
javalabra's Issues
Valikon kohta "Lopeta" ei sulje ohjelmaa
Tätä ei oikeastaan tarvitse paljoa selitellä.
Kaatuminen laivojen sijoittamisvaiheessa tekstikäyttöliittymässä
Pelin saa kaadettua tekstikäyttöliittymässä joillain virheellisillä syötteillä kuten esimerkiksi:
ammu a e 3
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?
Ohjeiden puuttuminen graafisessa käyttöliittymässä
Ohjelman valikon valinta "Ohje" ei tee mitään (sillä en ehtinyt toteuttaa tätä ominaisuutta).
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.